Delen via


Een opgeslagen procedure maken

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric Preview

In dit artikel wordt beschreven hoe u een opgeslagen SQL Server-procedure maakt met behulp van SQL Server Management Studio en met behulp van de instructie Transact-SQL CREATE PROCEDURE.

Permissions

Vereist de machtiging CREATE PROCEDURE in de database en ALTER-machtiging voor het schema waarin de procedure wordt gemaakt.

Een opgeslagen procedure maken

U kunt de gebruikersinterface van SQL Server Management Studio (SSMS) of Transact-SQL in een SSMS-queryvenster gebruiken om een opgeslagen procedure te maken. Gebruik altijd de nieuwste versie van SSMS.

Note

In de opgeslagen voorbeeldprocedure in dit artikel wordt de voorbeelddatabase AdventureWorksLT2022 (SQL Server) of AdventureWorksLT (Azure SQL Database) gebruikt. Zie AdventureWorksLT voor instructies voor het ophalen en gebruiken van de voorbeelddatabases.

SQL Server Management Studio gebruiken

Een opgeslagen procedure maken in SSMS:

  1. Maak in Objectverkenner verbinding met een exemplaar van SQL Server of Azure SQL Database.

    Zie de volgende quickstarts voor meer informatie:

  2. Vouw de instantie uit en vouw vervolgens Databases uit.

  3. Vouw de gewenste database uit en vouw vervolgens Programmeerbaarheid uit.

  4. Klik met de rechtermuisknop op Opgeslagen Procedures, en selecteer Nieuwe>opgeslagen procedure. Er wordt een nieuw queryvenster geopend met een sjabloon voor de opgeslagen procedure.

    De standaardsjabloon voor opgeslagen procedures heeft twee parameters. Als uw opgeslagen procedure minder, meer of geen parameters heeft, voegt u indien nodig parameterregels toe aan of verwijdert u deze uit de sjabloon.

  5. Selecteer in het menu QuerySpecificeer waarden voor sjabloonparameters.

  6. Geef in het dialoogvenster Waarden opgeven voor sjabloonparameters de volgende informatie op voor de waardevelden:

    • Auteur: Vervang Name door uw naam.
    • Datum maken: voer de datum van vandaag in.
    • Beschrijving: Geef kort aan wat de procedure doet.
    • Procedure_Name: Vervang door ProcedureName de naam van de nieuwe opgeslagen procedure.
    • @Param1: Vervang deze door @p1 de voornaam van de parameter, zoals @ColumnName1.
    • @Datatype_For_Param1: Vervang indien nodig door int het gegevenstype van uw eerste parameter, zoals nvarchar(50).
    • Default_Value_For_Param1: Vervang, indien van toepassing, door 0 de standaardwaarde van uw eerste parameter of NULL.
    • @Param2: Vervang deze door @p2 de tweede parameternaam, zoals @ColumnName2.
    • @Datatype_For_Param2: Vervang zo nodig het int gegevenstype van uw tweede parameter, zoals nvarchar(50).
    • Default_Value_For_Param2: Vervang, indien van toepassing, door 0 de standaardwaarde van uw tweede parameter of NULL.

    In de volgende schermopname ziet u het voltooide dialoogvenster voor de voorbeeldprocedure die is opgeslagen:

    Schermopname van een voltooid dialoogvenster Waarden opgeven voor sjabloonparameters.

  7. Select OK.

  8. Vervang in de Query-editor de SELECT-instructie door de query voor uw procedure.

    De volgende code toont de voltooide CREATE PROCEDURE-instructie voor de voorbeeld stored procedure.

    -- =======================================================
    -- 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. Als u de syntaxis wilt testen, selecteer dan in het menu Query de optie Parseren. Corrigeer eventuele fouten.

  10. Selecteer Uitvoeren op de werkbalk. De procedure wordt gemaakt als een object in de database.

  11. Als u de nieuwe procedure in Objectverkenner wilt zien, klikt u met de rechtermuisknop op Opgeslagen procedures en selecteert u Vernieuwen.

Ga als volgt te werk om de procedure uit te voeren:

  1. Klik in Objectverkenner met de rechtermuisknop op de naam van de opgeslagen procedure en selecteer Opgeslagen procedure uitvoeren.

  2. Voer in het venster Procedure uitvoeren waarden in voor alle parameters en selecteer VERVOLGENS OK. Zie Een opgeslagen procedure uitvoeren voor gedetailleerde instructies.

    Als u bijvoorbeeld de SalesLT.uspGetCustomerCompany voorbeeldprocedure wilt uitvoeren, voert u Cannon in voor de parameter @LastName en Chris voor de parameter @FirstName en selecteert u OK. De opgeslagen procedure wordt uitgevoerd en retourneert FirstNameChris, LastNameCannon en CompanyNameOutdoor Sporting Goods.

Important

Valideer alle gebruikersinvoer. Voeg geen gebruikersinvoer samen voordat u deze valideert. Voer nooit een opdracht uit die is samengesteld op basis van niet-gevalideerde gebruikersinvoer.

Use Transact-SQL

Ga als volgt te werk om een procedure te maken in de SSMS-queryeditor:

  1. Maak in SSMS verbinding met een exemplaar van SQL Server of Azure SQL Database.

  2. Selecteer Nieuwe query op de werkbalk.

  3. Voer de volgende code in het queryvenster in, waarbij u de namen en gegevenstypen van parameters en de SELECT-instructie vervangt <ProcedureName>door uw eigen waarden.

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

    Met de volgende instructie maakt u bijvoorbeeld dezelfde opgeslagen procedure in de AdventureWorksLT database als in het vorige voorbeeld, met een iets andere procedurenaam.

    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. Selecteer Uitvoeren op de werkbalk om de query uit te voeren. De opgeslagen procedure is aangemaakt.

  5. Als u de opgeslagen procedure wilt uitvoeren, voert u een EXECUTE-instructie in een nieuw queryvenster in, geeft u waarden op voor parameters en selecteert u Vervolgens Uitvoeren. Zie Een opgeslagen procedure uitvoeren voor gedetailleerde instructies.