Udostępnij za pomocą


Utwórz procedurę składowaną

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

W tym artykule opisano sposób tworzenia procedury składowanej programu SQL Server przy użyciu programu SQL Server Management Studio oraz instrukcji CREATE PROCEDURE Transact-SQL.

Permissions

Wymaga uprawnienia CREATE PROCEDURE w bazie danych i uprawnienia ALTER w schemacie, w którym jest tworzona procedura.

Utwórz procedurę składowaną

Do wykonania procedury składowanej można użyć programu SQL Server Management Studio (SSMS) lub Transact-SQL w oknie zapytania programu SSMS. Zainstaluj najnowszą wersję programu SQL Server Management Studio (SSMS).

Note

Przykładowa procedura składowana w tym artykule korzysta z przykładowej bazy danych AdventureWorksLT2022 (SQL Server) lub AdventureWorksLT (Azure SQL Database). Aby uzyskać instrukcje dotyczące pobierania AdventureWorksLT przykładowych baz danych i korzystania z nich, zobacz AdventureWorks sample databases (Przykładowe bazy danych AdventureWorks).

Korzystanie z programu SQL Server Management Studio

Aby utworzyć procedurę składowaną w programie SSMS:

  1. W Eksploratorze obiektów nawiąż połączenie z wystąpieniem SQL Server lub usługi Azure SQL Database.

    Aby uzyskać więcej informacji, sprawdź następujące przewodniki szybkiego startu:

  2. Rozwiń wystąpienie, następnie rozwiń węzeł Bazy danych.

  3. Rozwiń bazę danych, którą chcesz, a następnie rozwiń węzeł Programmability.

  4. Kliknij prawym przyciskiem myszy pozycję Procedury składowane, a następnie wybierz pozycję Nowa>procedura składowana. Otworzy się nowe okno zapytania z szablonem procedury składowanej.

    Domyślny szablon procedury składowanej ma dwa parametry. Jeśli procedura składowana ma mniej, więcej lub nie ma parametrów, dodaj lub usuń wiersze parametrów w szablonie odpowiednio.

  5. W menu zapytania wybierz pozycję Określ wartości parametrów szablonu.

  6. W oknie dialogowym Określanie wartości parametrów szablonu podaj następujące informacje dla pól Wartość :

    • Autor: zastąp Name swoim imieniem.
    • Data utworzenia: wprowadź bieżącą datę.
    • Opis: Krótko opisz, co robi procedura.
    • Procedure_Name: zastąp ProcedureName nową nazwą składowanej procedury.
    • @Param1: Zastąp @p1 nazwą pierwszego parametru, na przykład @ColumnName1.
    • @Datatype_For_Param1: W razie potrzeby zastąp int typem danych pierwszego parametru, takim jak nvarchar(50).
    • Default_Value_For_Param1: W razie potrzeby zastąp 0 ciąg wartością domyślną pierwszego parametru lub wartością NULL.
    • @Param2: zastąp @p2 nazwą swojego drugiego parametru, na przykład @ColumnName2.
    • @Datatype_For_Param2: W razie potrzeby zastąp ciąg int ciągiem datatype drugiego parametru, takim jak nvarchar(50).
    • Default_Value_For_Param2: W razie potrzeby zastąp 0 wartość domyślną drugiego parametru lub wartością NULL.

    Poniższy zrzut ekranu przedstawia ukończone okno dialogowe przykładowej procedury składowanej:

    Zrzut ekranu przedstawiający ukończone okno dialogowe Określanie wartości parametrów szablonu.

  7. Kliknij przycisk OK.

  8. W Edytorze zapytań zastąp instrukcję SELECT zapytaniem dla procedury.

    Poniższy kod przedstawia ukończoną instrukcję CREATE PROCEDURE dla przykładowej procedury składowanej:

    -- =======================================================
    -- 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. Aby przetestować składnię, w menu Zapytanie wybierz pozycję Przeanalizuj. Popraw wszelkie błędy.

  10. Wybierz pozycję Wykonaj na pasku narzędzi. Procedura jest tworzona jako obiekt w bazie danych.

  11. Aby wyświetlić nową procedurę wymienioną w Eksploratorze obiektów, kliknij prawym przyciskiem myszy pozycję Procedury składowane i wybierz polecenie Odśwież.

Aby uruchomić procedurę:

  1. W Eksploratorze obiektów kliknij prawym przyciskiem myszy nazwę procedury składowanej i wybierz polecenie Wykonaj procedurę składowaną.

  2. W oknie Wykonaj procedurę wprowadź wartości dla wszystkich parametrów, a następnie wybierz przycisk OK. Aby uzyskać szczegółowe instrukcje, zobacz Wykonywanie procedury składowanej.

    Aby na przykład uruchomić SalesLT.uspGetCustomerCompany przykładową procedurę, wprowadź Cannon dla parametru @LastName i Chris dla parametru @FirstName, a następnie wybierz OK. Procedura składowana działa i zwraca FirstNameChris, LastNameCannon i CompanyNameOutdoor Sporting Goods.

Important

Zweryfikuj wszystkie dane wejściowe użytkownika. Nie należy łączyć danych wejściowych użytkownika przed jego zweryfikowaniem. Nigdy nie wykonaj polecenia skonstruowanego z niewaleowanych danych wejściowych użytkownika.

Korzystanie z Transact-SQL

Aby utworzyć procedurę w edytorze zapytań programu SSMS:

  1. W SSMS nawiąż połączenie z instancją SQL Server lub Azure SQL Database.

  2. Wybierz pozycję Nowe zapytanie na pasku narzędzi.

  3. Wprowadź następujący kod w oknie zapytania, zastępując <ProcedureName>, nazwy i typy danych dowolnych parametrów oraz instrukcję SELECT na własne wartości.

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

    Na przykład poniższa instrukcja tworzy tę samą procedurę składowaną w AdventureWorksLT bazie danych co w poprzednim przykładzie z nieco inną nazwą procedury.

    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. Wybierz pozycję Wykonaj na pasku narzędzi, aby wykonać zapytanie. Zostanie utworzona procedura składowana.

  5. Aby uruchomić procedurę składowaną, wprowadź instrukcję EXECUTE w nowym oknie zapytania, podając wartości dla dowolnych parametrów, a następnie wybierz pozycję Wykonaj. Aby uzyskać szczegółowe instrukcje, zobacz Wykonywanie procedury składowanej.