Sdílet prostřednictvím


Vytvoření uložené procedury

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Tento článek popisuje, jak vytvořit uloženou proceduru SQL Serveru pomocí aplikace SQL Server Management Studio a pomocí příkazu Transact-SQL CREATE PROCEDURE.

Permissions

Vyžaduje oprávnění CREATE PROCEDURE v databázi a ALTER oprávnění ke schématu, ve kterém se procedura vytváří.

Vytvoření uložené procedury

K provedení uložené procedury můžete použít SQL Server Management Studio (SSMS) nebo Transact-SQL v okně dotazu SSMS. Nainstalujte nejnovější verzi aplikace SQL Server Management Studio (SSMS).

Note

Příklad uložené procedury v tomto článku používá ukázkovou AdventureWorksLT2022 databázi (SQL Server) nebo AdventureWorksLT (Azure SQL Database). Pokyny k získání a používání AdventureWorksLT ukázkových databází najdete v ukázkových databázích AdventureWorks.

Použití aplikace SQL Server Management Studio

Vytvoření uložené procedury v SSMS:

  1. V Průzkumníku objektů se připojte k instanci SQL Serveru nebo Azure SQL Database.

    Další informace najdete v následujících úvodních pokynech:

  2. Rozbalte instanci a poté rozbalte Databáze.

  3. Rozbalte požadovanou databázi a potom rozbalte programovatelnost.

  4. Klikněte pravým tlačítkem myši na Uložené procedury a pak vyberte Nová>uložená procedura. Otevře se nové okno dotazu se šablonou pro uloženou proceduru.

    Výchozí šablona uložené procedury má dva parametry. Pokud uložená procedura obsahuje méně, více nebo žádné parametry, přidejte nebo odeberte řádky parametrů v šabloně podle potřeby.

  5. V nabídce dotazu vyberte Zadat hodnoty pro parametry šablony.

  6. V dialogovém okně Zadat hodnoty parametrů šablony zadejte následující informace pro pole Hodnota :

    • Autor: Nahraďte Name svým jménem.
    • Datum vytvoření: Zadejte dnešní datum.
    • Popis: Stručně popište, co postup dělá.
    • Procedure_Name: Nahraďte ProcedureName novým názvem uložené procedury.
    • @Param1: Nahraďte @p1 názvem svého prvního parametru, například @ColumnName1.
    • @Datatype_For_Param1: Podle potřeby nahraďte int datovým typem vašeho prvního parametru, například nvarchar(50).
    • Default_Value_For_Param1: Podle potřeby nahraďte 0 výchozí hodnotou vašeho prvního parametru nebo hodnotou NULL.
    • @Param2: Nahraďte @p2 názvem druhého parametru, například @ColumnName2.
    • @Datatype_For_Param2: Podle potřeby nahraďte int datovým typem druhého parametru, například nvarchar(50).
    • Default_Value_For_Param2: Podle potřeby nahraďte 0 výchozí hodnotou druhého parametru nebo hodnotou NULL.

    Následující snímek obrazovky ukazuje dokončené dialogové okno pro příklad uložené procedury:

    Snímek obrazovky znázorňující vyplněné dialogové okno Zadat hodnoty pro parametry šablony

  7. Vyberte OK.

  8. V Editoru dotazů nahraďte příkaz SELECT dotazem pro váš postup.

    Následující kód ukazuje dokončený příkaz CREATE PROCEDURE pro příklad uloženou proceduru:

    -- =======================================================
    -- 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. Syntaxi otestujete tak, že v nabídce Dotaz vyberete Parsovat. Opravte všechny chyby.

  10. Na panelu nástrojů vyberte Spustit . Procedura se vytvoří jako objekt v databázi.

  11. Pokud chcete zobrazit nový postup uvedený v Průzkumníku objektů, klikněte pravým tlačítkem myši na Uložené procedury a vyberte Aktualizovat.

Aby bylo možné spustit postup:

  1. V Průzkumníku objektů klikněte pravým tlačítkem myši na název uložené procedury a vyberte Spustit uloženou proceduru.

  2. V okně Spustit proceduru zadejte hodnoty pro všechny parametry a pak vyberte OK. Podrobné pokyny najdete v tématu Spuštění uložené procedury.

    Pokud chcete například spustit ukázkovou proceduru SalesLT.uspGetCustomerCompany , zadejte kanón pro parametr @LastName a Chris pro parametr @FirstName a pak vyberte OK. Uložená procedura běží a vrací FirstNameChrise, LastNameCannon a CompanyNameVenkovní sportovní zboží.

Important

Ověřte veškerý vstup uživatele. Nezřetězte uživatelský vstup, dokud jej neověříte. Nikdy nespouštět příkaz vytvořený z neplatného uživatelského vstupu.

Použijte Transact-SQL

Postup vytvoření v Editoru dotazů SSMS:

  1. V nástroji SSMS se připojte k instanci SQL Serveru nebo Azure SQL Database.

  2. Na panelu nástrojů vyberte Nový dotaz .

  3. Do okna dotazu zadejte následující kód, nahraďte <ProcedureName>názvy a datové typy libovolných parametrů a příkaz SELECT vlastními hodnotami.

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

    Například následující příkaz vytvoří stejnou uloženou proceduru AdventureWorksLT v databázi jako v předchozím příkladu s mírně odlišným názvem 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. Výběrem možnosti Spustit na panelu nástrojů spusťte dotaz. Vytvoří se uložená procedura.

  5. Pokud chcete spustit uloženou proceduru, zadejte v novém okně dotazu příkaz EXECUTE, zadejte hodnoty pro všechny parametry a pak vyberte Spustit. Podrobné pokyny najdete v tématu Spuštění uložené procedury.