Creare una procedura archiviata

Si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsSistema di Piattaforma Analitica (PDW)Database SQL in Microsoft Fabric

Questo articolo descrive come creare una stored procedure SQL Server usando SQL Server Management Studio e usando l'istruzione Transact-SQLCREATE PROCEDURE.

Permissions

Richiede l'autorizzazione CREATE PROCEDURE nel database e l'autorizzazione ALTER per lo schema in cui viene creata la procedura.

Creare una stored procedure

È possibile usare SQL Server Management Studio (SSMS) o Transact-SQL in una finestra di query di SSMS per eseguire una stored procedure. Installare la versione più recente di SQL Server Management Studio (SSMS).

Note

La stored procedure di esempio illustrata in questo articolo usa il database di esempio AdventureWorksLT2022 (SQL Server) o AdventureWorksLT (database SQL di Azure). Per informazioni su come ottenere e usare i database di esempio AdventureWorksLT, vedere Database di esempio di AdventureWorks.

Usa SQL Server Management Studio

Per creare una stored procedure in SSMS, procedere come segue:

  1. In Esplora oggetti connettersi a un'istanza di SQL Server o del database SQL di Azure.

    Per altre informazioni, consulta le seguenti guide introduttive rapide:

  2. Espandi l'istanza, quindi espandi Database.

  3. Espandere il database desiderato, quindi espandere Programmabilità.

  4. Fare clic con il pulsante destro del mouse su Stored Procedure, quindi selezionare Nuova>Stored Procedure. Si apre una nuova finestra di query con un modello per la stored procedure.

    Il modello predefinito della stored procedure ha due parametri. Se la stored procedure contiene un numero di parametri inferiore, superiore o non ha nessun parametro, aggiungere o rimuovere righe di parametri nel modello in base alle esigenze.

  5. Scegliere Imposta valori per parametri modello dal menu Query.

  6. Nella finestra di dialogo Specifica valori per i parametri del modello specificare le informazioni seguenti per i campi Valore:

    • Autore: sostituire Name con il proprio nome.
    • Data di creazione: Inserisci la data odierna.
    • Descrizione: descrivere brevemente le operazioni della procedura.
    • Procedure_Name: sostituire ProcedureName con il nuovo nome della stored procedure.
    • @Param1: sostituire @p1 con il nome del primo parametro, ad esempio @ColumnName1.
    • @Datatype_For_Param1: a seconda dei casi, sostituire int con il tipo di dati del primo parametro, ad esempio nvarchar(50).
    • Default_Value_For_Param1: a seconda dei casi, sostituire 0 con il valore predefinito del primo parametro o con NULL.
    • @Param2: sostituire @p2 con il nome del secondo parametro, ad esempio @ColumnName2.
    • @Datatype_For_Param2: a seconda dei casi, sostituire int con il tipo di dati del secondo parametro, ad esempio nvarchar(50).
    • Default_Value_For_Param2: a seconda dei casi, sostituire 0 con il valore predefinito del secondo parametro o con NULL.

    Lo screenshot seguente mostra la finestra di dialogo completata per la stored procedure di esempio:

    Screenshot che mostra una finestra di dialogo completata

  7. Seleziona OK.

  8. Nell'Editor di query, sostituisci l'istruzione SELECT con la query della procedura.

    Il codice seguente mostra l'istruzione completa CREATE PROCEDURE per la stored procedure di esempio:

    -- =======================================================
    -- Create Stored Procedure Template for Azure SQL Database
    -- =======================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROCEDURE SalesLT.uspGetCustomerCompany
    (
        -- Add the parameters for the stored procedure here
        @LastName nvarchar(50) = NULL,
        @FirstName nvarchar(50) = NULL
    )
    AS
    /*
    -- =============================================
    -- Author:      My Name
    -- Create Date: 01/23/2024
    -- Description: Returns the customer's company name.
    -- =============================================
    */
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON
    
        -- Insert statements for procedure here
        SELECT FirstName, LastName, CompanyName
           FROM SalesLT.Customer
           WHERE FirstName = @FirstName AND LastName = @LastName;
    END
    GO
    
  9. Per controllare la sintassi, scegliere Analizza dal menu Query. Correggere eventuali errori.

  10. Nella barra degli strumenti selezionare Esegui. La procedura memorizzata viene creata come oggetto nel database.

  11. Per visualizzare la nuova stored procedure elencata in Esplora oggetti, fare clic con il pulsante destro del mouse su Stored Procedures e selezionare Aggiorna.

Per eseguire la procedura:

  1. Su Esplora oggetti fare clic con il pulsante destro del mouse sul nome della stored procedure e selezionare Esegui stored procedure.

  2. Nella finestra Esegui procedura immettere i valori per tutti i parametri, quindi selezionare OK. Per istruzioni dettagliate, vedi Eseguire una procedura archiviata.

    Ad esempio, per eseguire la procedura di esempio SalesLT.uspGetCustomerCompany, immettere Cannon nel parametro @LastName e Chris nel parametro @FirstName, quindi selezionare OK. La procedura archiviata viene eseguita e restituisce FirstNameChris, LastNameCannon e CompanyNameOutdoor Sporting Goods.

Important

Convalida tutti i dati immessi dall'utente. Non concatenare l'input dell'utente prima di averlo convalidato. Non eseguire mai un comando creato dall'input dell'utente non convalidato.

Usare Transact-SQL

Per creare una procedura nell'Editor di query di SSMS:

  1. In SSMS, connettersi a un'istanza di SQL Server o a Database SQL di Azure.

  2. Nella barra degli strumenti selezionare Nuova query.

  3. Immetti il codice seguente nella finestra di query, sostituendo <ProcedureName>, i nomi e i tipi di dati di eventuali parametri e l'istruzione SELECT con i valori desiderati.

    CREATE PROCEDURE <ProcedureName>
       @<ParameterName1> <data type>,
       @<ParameterName2> <data type>
    AS   
    
       SET NOCOUNT ON;
       SELECT <your SELECT statement>;
    GO
    

    Ad esempio, l'istruzione seguente crea la stessa stored procedure nel database AdventureWorksLT dell'esempio precedente, con un nome di procedura leggermente diverso.

    CREATE PROCEDURE SalesLT.uspGetCustomerCompany1
        @LastName nvarchar(50),
        @FirstName nvarchar(50)
    AS   
    
        SET NOCOUNT ON;
        SELECT FirstName, LastName, CompanyName
        FROM SalesLT.Customer
        WHERE FirstName = @FirstName AND LastName = @LastName;
    GO
    
  4. Nella barra degli strumenti selezionare Esegui per eseguire la query. La procedura memorizzata è stata creata.

  5. Per eseguire la stored procedure, immettere un'istruzione EXECUTE in una nuova finestra di query, specificando i valori per eventuali parametri, quindi selezionare Esegui. Per istruzioni dettagliate, vedi Eseguire una procedura archiviata.