Dela via


Skapa en lagrad procedur

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Förhandsversion av Microsoft Fabric

Den här artikeln beskriver hur du skapar en lagrad SQL Server-procedur med hjälp av SQL Server Management Studio och med hjälp av instruktionen Transact-SQL CREATE PROCEDURE.

Permissions

Kräver create procedure-behörighet i databasen och ALTER-behörighet för schemat där proceduren skapas.

Skapa en lagrad procedur

Du kan använda användargränssnittet för SQL Server Management Studio (SSMS) eller Transact-SQL i ett SSMS-frågefönster för att skapa en lagrad procedur. Använd alltid den senaste versionen av SSMS.

Note

Exempel på lagrad procedur i den här artikeln använder exempeldatabasen AdventureWorksLT2022 (SQL Server) eller AdventureWorksLT (Azure SQL Database). Anvisningar om hur du hämtar och använder AdventureWorksLT exempeldatabaserna finns i AdventureWorks-exempeldatabaser.

Använda SQL Server Management Studio

Så här skapar du en lagrad procedur i SSMS:

  1. I Object Explorer ansluter du till en instans av SQL Server eller Azure SQL Database.

    Mer information finns i följande snabbstarter:

  2. Expandera instansen och expandera sedan Databaser.

  3. Expandera den databas som du vill använda och expandera sedan Programmability.

  4. Högerklicka på Lagrade procedurer och välj sedan Ny>lagrad procedur. Ett nytt frågefönster öppnas med en mall för den lagrade proceduren.

    Standardmallen för lagrad procedur har två parametrar. Om den lagrade proceduren har färre, fler eller inga parametrar lägger du till eller tar bort parameterrader i mallen efter behov.

  5. På menyn Query väljer du Ange värden för mallparametrar.

  6. I dialogrutan Ange värden för mallparametrar anger du följande information för fälten Värde :

    • Författare: Ersätt Name med ditt namn.
    • Skapa datum: Ange dagens datum.
    • Beskrivning: Beskriv kortfattat vad proceduren gör.
    • Procedure_Name: Ersätt ProcedureName med det nya lagrade procedurnamnet.
    • @Param1: Ersätt @p1 med ditt första parameternamn, till exempel @ColumnName1.
    • @Datatype_For_Param1: Ersätt int efter behov med den första parameterns datatyp, till exempel nvarchar(50).
    • Default_Value_For_Param1: Ersätt 0 efter behov med den första parameterns standardvärde eller NULL.
    • @Param2: Ersätt @p2 med ditt andra parameternamn, till exempel @ColumnName2.
    • @Datatype_For_Param2: Ersätt int efter behov med den andra parameterns datatyp, till exempel nvarchar(50).
    • Default_Value_For_Param2: Ersätt 0 efter behov med den andra parameterns standardvärde, eller NULL.

    Följande skärmbild visar den slutförda dialogrutan för den lagrade exempelproceduren:

    Skärmbild som visar dialogrutan Ange värden för mallparametrar.

  7. Select OK.

  8. I frågeredigeraren ersätter du SELECT-instruktionen med frågan för proceduren.

    Följande kod visar den slutförda CREATE PROCEDURE-instruktionen för exempellagringsproceduren:

    -- =======================================================
    -- 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. Om du vill testa syntaxen går du till menyn Query och väljer Parsa. Korrigera eventuella fel.

  10. Välj Kör i verktygsfältet. Proceduren skapas som ett objekt i databasen.

  11. Om du vill se den nya proceduren i Object Explorer högerklickar du på Lagrade procedurer och väljer Uppdatera.

Så här kör du proceduren:

  1. Högerklicka på namnet på den lagrade proceduren i Object Explorer och välj Kör lagrad procedur.

  2. I fönstret Kör procedur anger du värden för alla parametrar och väljer sedan OK. Detaljerade anvisningar finns i Kör en lagrad procedur.

    Om du till exempel vill köra exempelproceduren SalesLT.uspGetCustomerCompany anger du Cannon för parametern @LastName och Chris för parametern @FirstName och väljer sedan OK. Den lagrade proceduren körs och returnerar FirstNameChris, LastNameCannon och CompanyNameOutdoor Sporting Goods.

Important

Verifiera alla användarindata. Sammanfoga inte användarindata innan du verifierar det. Kör aldrig ett kommando som skapats med ovaliderade användarindata.

Use Transact-SQL

Så här skapar du en procedur i SSMS-frågeredigeraren:

  1. I SSMS ansluter du till en instans av SQL Server eller Azure SQL Database.

  2. Välj Ny fråga i verktygsfältet.

  3. Ange följande kod i frågefönstret och ersätt <ProcedureName>, namn och datatyper för alla parametrar och SELECT-instruktionen med dina egna värden.

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

    Följande instruktion skapar till exempel samma lagrade procedur i AdventureWorksLT databasen som i föregående exempel, med ett något annorlunda procedurnamn.

    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. Välj Kör i verktygsfältet för att köra frågan. Den lagrade proceduren skapas.

  5. Om du vill köra den lagrade proceduren anger du en EXECUTE-instruktion i ett nytt frågefönster, anger värden för alla parametrar och väljer sedan Kör. Detaljerade anvisningar finns i Kör en lagrad procedur.