Criar um procedimento armazenado

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (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:

    Screenshot that shows a completed Specify Values for Template Parameters dialog box.

  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 FirstNameChris, LastNameCannon e CompanyNameOutdoor 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.