Criar um procedimento armazenado

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System)

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

Permissões

Requer a permissão CREATE PROCEDURE no banco de dados e a permissão ALTER no esquema no qual o procedimento está sendo criado.

Criar um procedimento armazenado

Você pode usar a interface do usuário do SQL Server Management Studio (SSMS) ou o Transact-SQL em uma janela de consulta do SSMS para criar um procedimento armazenado. Use sempre a versão mais recente do SSMS.

Observação

O procedimento armazenado de exemplo neste artigo usa o banco de dados de exemplo AdventureWorksLT2022 (SQL Server) ou AdventureWorksLT (Banco de Dados SQL do Azure). Para obter instruções sobre como obter e usar os AdventureWorksLT bancos de dados de exemplo, consulte Bancos de dados de exemplo AdventureWorks.

Usar o SQL Server Management Studio

Para criar um procedimento armazenado no SSMS:

  1. No Pesquisador de Objetos, conecte-se a uma instância do SQL Server ou do Banco de Dados SQL do Azure.

    Para obter mais informações, consulte os seguintes guias de início rápido:

  2. Expanda a instância e expanda Bancos de dados.

  3. Expanda o banco de dados desejado e expanda Programabilidade.

  4. Clique com o botão direito em Procedimentos Armazenados e selecione Novo>Procedimento Armazenado. Uma nova janela de consulta é aberta com um modelo para o procedimento armazenado.

    O modelo de procedimento armazenado padrão tem dois parâmetros. Se o procedimento armazenado tiver menos ou mais parâmetros ou nenhum, adicione ou remova linhas de parâmetro 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 de modelo, forneça as seguintes informações para os campos Valor:

    • Autor: substitua Name por seu nome.
    • Data de criação: insira a data de hoje.
    • Descrição: descreva resumidamente o que o procedimento faz.
    • Procedure_Name: substitua ProcedureName pelo novo nome do procedimento armazenado.
    • @Param1: substitua @p1 pelo nome do primeiro parâmetro, como @ColumnName1.
    • @Datatype_For_Param1: conforme apropriado, substitua int pelo tipo de dados do 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 segundo parâmetro, como @ColumnName2.
    • @Datatype_For_Param2: conforme apropriado, substitua int pelo tipo de dados do segundo parâmetro, como nvarchar(50).
    • Default_Value_For_Param2: conforme apropriado, substitua 0 pelo valor padrão do segundo parâmetro ou NULL.

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

    Captura de tela que mostra uma caixa de diálogo Especificar Valores para Parâmetros de Modelo concluída.

  7. Selecione OK.

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

    O código a seguir mostra a instrução CREATE PROCEDURE concluída para o procedimento armazenado de exemplo:

    -- =======================================================
    -- Create Stored Procedure Template for Azure SQL Database
    -- =======================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:      My Name
    -- Create Date: 01/23/2024
    -- Description: Returns the customer's company name.
    -- =============================================
    CREATE PROCEDURE SalesLT.uspGetCustomerCompany
    (
        -- Add the parameters for the stored procedure here
        @LastName nvarchar(50) = NULL,
        @FirstName nvarchar(50) = NULL
    )
    AS
    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. Corrija todos os erros.

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

  11. Para ver o novo procedimento listado no Pesquisador de Objetos, clique com o botão direito em Procedimentos Armazenados e selecione Atualizar.

Para executar o procedimento:

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

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

    Por exemplo, para executar o procedimento de exemplo SalesLT.uspGetCustomerCompany, insira Cannon para o parâmetro @LastName e Chris para o parâmetro @FirstName e selecione OK. O procedimento armazenado é executado e retorna FirstName Chris, LastName Cannon e CompanyName Outdoor Sporting Goods.

Importante

Valide todas as entradas de usuário. Não concatene a entrada do usuário antes de validá-la. Nunca execute um comando construído por uma entrada de usuário inválida.

Usar o Transact-SQL

Para criar um procedimento no Editor de Consultas SSMS:

  1. No SSMS, conecte-se a uma instância do SQL Server ou do Banco de Dados SQL do Azure.

  2. Selecione Nova Consulta na barra de ferramentas.

  3. Insira o código a seguir na janela de consulta, substituindo <ProcedureName>, os nomes e tipos de dados de quaisquer parâmetros e a instrução SELECT por 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 instrução a seguir cria o mesmo procedimento armazenado no banco de dados AdventureWorksLT que o 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, insira uma instrução EXECUTE em uma nova janela de consulta, fornecendo valores para quaisquer parâmetros, e selecione Executar. Para obter instruções detalhadas, consulte Executar um procedimento armazenado.