Creare una stored procedure

Si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

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

Autorizzazioni

È necessario disporre dell'autorizzazione CREATE PROCEDURE per il database e dell'autorizzazione ALTER per lo schema in cui la stored procedure viene creata.

Creare una stored procedure

È possibile usare l'interfaccia utente di SQL Server Management Studio (SSMS) o Transact-SQL in una intervallo di query di SSMS per creare una stored procedure. Usare sempre l'ultima versione di SSMS.

Nota

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

Usare SQL Server Management Studio

Per creare una stored procedure in SSMS:

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

    Per altre informazioni, vedere la guida di Avvio rapido seguente.

  2. Espandere l'istanza, quindi espandere i 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. Viene aperto un nuovo intervallo 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.
    • Crea Data: immettere 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 that shows a completed Specify Values for Template Parameters dialog box.

  7. Seleziona OK.

  8. Nell'Editor di query sostituire l'istruzione SELECT con la query per la procedura.

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

    -- =======================================================
    -- Create Stored Procedure Template for Azure SQL Database
    -- =======================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:      My Name
    -- Create Date: 01/23/2024
    -- Description: Returns the customer's company name.
    -- =============================================
    CREATE PROCEDURE SalesLT.uspGetCustomerCompany
    (
        -- Add the parameters for the stored procedure here
        @LastName nvarchar(50) = NULL,
        @FirstName nvarchar(50) = NULL
    )
    AS
    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 stored procedure viene creata come un oggetto nel database.

  11. Per visualizzare la stored procedure nell'elenco di Esplora oggetti, fare clic con il pulsante destro del mouse su Stored Procedure 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, vedere Eseguire una stored procedure.

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

Importante

Convalidare sempre input di tutti gli utenti. 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 stored procedure in nell'Editor di query di SSMS.

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

  2. Nella barra degli strumenti selezionare Nuova query.

  3. Immettere il codice seguente nell'intervallo di query sostituendo <ProcedureName>, i nomi e i tipi di dati dei parametri nonché l'istruzione SELECT con i valori personalizzati.

    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 stored procedure è stata creata.

  5. Per eseguire la stored procedure, immettere un'istruzione EXECUTE in un nuovo intervallo di query specificando i valori per tutti i parametri, quindi selezionare Esegui. Per istruzioni dettagliate, vedere Eseguire una stored procedure.