Partilhar via


Criar um procedimento armazenado

Aplica-se a:Banco de Dados SQL dodo AzureInstância Gerenciada SQL do Azuredo Azure Synapse Analyticsdo Analytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Este artigo descreve como criar um procedimento armazenado SQL Server usando SQL Server Management Studio e utilizando a instrução Transact-SQL CREATE PROCEDURE.

Permissions

Requer permissão CREATE PROCEDURE na base de dados e permissão ALTER no esquema onde o procedimento vai ser criado.

Criar um procedimento armazenado

Pode usar o SQL Server Management Studio (SSMS), ou Transact-SQL numa janela de consulta SSMS, para executar um procedimento armazenado. Instale a versão mais recente do SQL Server Management Studio (SSMS).

Observação

O procedimento armazenado de exemplo neste artigo utiliza a base de dados de exemplo AdventureWorksLT2022 (SQL Server) ou AdventureWorksLT (Azure SQL Database). Para instruções sobre como obter e utilizar as AdventureWorksLT bases de dados de exemplo, consulte as bases de dados de exemplo AdventureWorks.

Utilize SQL Server Management Studio

Para criar um procedimento armazenado no SSMS:

  1. No Object Explorer, ligue-se a uma instância do SQL Server ou Azure SQL Database.

    Para mais informações, consulte os seguintes quickstarts:

  2. Expandir a instância e depois expandir as Bases de Dados.

  3. Expande a base de dados que queres e depois expande a Programabilidade.

  4. Clique com o botão direito em Procedimentos Armazenados e depois selecione Novo>Procedimento Armazenado. Abre-se uma nova janela de consulta com um modelo para o procedimento armazenado.

    O modelo padrão de procedimento armazenado tem dois parâmetros. Se o seu procedimento armazenado tiver menos, mais ou nenhum parâmetro, adicione ou remova linhas de parâmetros no modelo conforme apropriado.

  5. No menu Consulta , selecione Especificar valores para parâmetros de modelo.

  6. Na caixa de diálogo Especificar Valores para Parâmetros do Modelo , forneça a seguinte informação para os campos Valor :

    • Autor: Substitua Name pelo seu nome.
    • Criar Data: Introduza a data de hoje.
    • Descrição: Descreva brevemente o que o procedimento faz.
    • Procedure_Name: Substituir ProcedureName pelo novo nome do procedimento armazenado.
    • @Param1: Substitua @p1 pelo nome do seu primeiro parâmetro, como @ColumnName1.
    • @Datatype_For_Param1: Conforme apropriado, substitua int pelo tipo de dado do seu primeiro parâmetro, como nvarchar(50).
    • Default_Value_For_Param1: Conforme apropriado, substitua 0 pelo valor padrão do primeiro parâmetro, ou NULL.
    • @Param2: Substitua @p2 pelo nome do seu segundo parâmetro, como @ColumnName2.
    • @Datatype_For_Param2: Conforme apropriado, substitua int pelo tipo de dado do seu segundo parâmetro, como nvarchar(50).
    • Default_Value_For_Param2: Conforme apropriado, substitua 0 pelo valor padrão do seu segundo parâmetro, ou NULL.

    A captura de ecrã seguinte mostra a caixa de diálogo concluída para o procedimento armazenado de exemplo:

    Captura de ecrã que mostra a caixa de diálogo Especificar Valores para Parâmetros do Modelo completa.

  7. Selecione OK.

  8. No Editor de Consultas, substitua a instrução SELECT pela consulta do seu procedimento.

    O código seguinte mostra a instrução CREATE PROCEDURE completada para o procedimento armazenado de exemplo:

    -- =======================================================
    -- 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. Para testar a sintaxe, no menu Consulta, selecione Analisar Sintaxe. Corrigir quaisquer erros.

  10. Selecione Executar na barra de ferramentas. O procedimento é criado como um objeto na base de dados.

  11. Para ver o novo procedimento listado no Explorador de Objetos, clique com o botão direito em Stored Procedures e selecione Atualizar.

Para executar o procedimento:

  1. No Explorador de Objetos, clique com o botão direito no nome do procedimento armazenado e selecione Executar Procedimento Armazenado.

  2. Na janela Executar Procedimento, introduza os valores de todos os parâmetros e depois selecione OK. Para instruções detalhadas, consulte Executar um procedimento armazenado.

    Por exemplo, para executar o SalesLT.uspGetCustomerCompany procedimento de amostra, introduza Cannon para o parâmetro @LastName e Chris para o parâmetro @FirstName, e depois selecione OK. O procedimento armazenado é executado e devolve FirstNameChris, LastNameCannon e CompanyNameArtigos Desportivos de Exterior.

Importante

Valide todas as entradas do utilizador. Não concatene a entrada do utilizador antes de a validar. Nunca execute um comando construído a partir de input de utilizador não validado.

Utilize o Transact-SQL

Para criar um procedimento no Editor de Consultas SSMS:

  1. No SSMS, ligue-se a uma instância do SQL Server ou Azure SQL Database.

  2. Selecione Nova Consulta na barra de ferramentas.

  3. Introduza o código seguinte na janela de consulta, substituindo <ProcedureName>, os nomes e tipos de dados de quaisquer parâmetros, e a instrução SELECT pelos seus próprios valores.

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

    Por exemplo, a seguinte instrução cria o mesmo procedimento armazenado na AdventureWorksLT base de dados do exemplo anterior, com um nome de procedimento ligeiramente diferente.

    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. Selecione Executar na barra de ferramentas para executar a consulta. O procedimento armazenado é criado.

  5. Para executar o procedimento armazenado, introduza uma instrução EXECUTE numa nova janela de consulta, fornecendo valores para quaisquer parâmetros, e depois selecione Executar. Para instruções detalhadas, consulte Executar um procedimento armazenado.