Executar um procedimento armazenado

Este tópico descreve como executar um procedimento armazenado no SQL Server 2012 usando o SQL Server Management Studio ou o Transact-SQL.

Há dois modos diferentes de executar um procedimento armazenado. A primeira e mais comum abordagem é fazer com que um aplicativo ou usuário chame o procedimento. A segunda abordagem é definir o procedimento para ser executado automaticamente quando uma instância do SQL Server for iniciada. Quando um procedimento é chamado por um aplicativo ou usuário, a palavra-chave EXECUTE ou EXEC do Transact-SQL é declarada explicitamente na chamada. Como alternativa, o procedimento poderá ser chamado e executado sem a palavra-chave se o for a primeira instrução do lote Transact-SQL.

Neste tópico

  • Antes de começar:

    Limitações e restrições

    Recomendações

    Segurança

  • Para executar um procedimento armazenado usando:

    SQL Server Management Studio

    Transact-SQL

Antes de começar

Limitações e restrições

  • O agrupamento de banco de dados de chamada é usado durante a correspondência de nomes dos procedimentos do sistema. Portanto, em seu aplicativo, você deve sempre fazer a diferenciação exata entre maiúsculas e minúsculas nos nomes em chamadas de procedimento. Por exemplo, este código falhará se for executado no contexto de um banco de dados que tenha um agrupamento com diferenciação de maiúsculas e minúsculas:

    EXEC SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help
    

    Para exibir os nomes exatos do procedimento de sistema, consulte as exibições de catálogo sys.system_objects e sys.system_parameters.

  • Se um procedimento definido pelo usuário tiver o mesmo nome de um procedimento de sistema, o procedimento definido pelo usuário talvez nunca seja executado.

Recomendações

  • Executando procedimentos armazenados do sistema

    Procedimentos armazenados do sistema começam com o prefixo sp_. Como eles aparecem logicamente em todos os bancos de dados definidos pelo usuário e o sistema, podem ser executados de qualquer banco de dados sem ter que qualificar totalmente o nome de procedimento. No entanto, recomendamos que você qualifique por esquema todos os nomes dos procedimentos armazenados do sistema com o nome do esquema sys para evitar conflitos de nomes. O exemplo a seguir mostra o método recomendado para chamar um procedimento armazenado do sistema.

    EXEC sys.sp_who;
    
  • Executando procedimentos armazenados definidos pelo usuário

    Ao executar um procedimento definido pelo usuário, nós recomendamos qualificar o nome de procedimento com o nome do esquema. Esta prática melhora um pouco o desempenho, pois o Mecanismo de Banco de Dados não tem que pesquisar vários esquemas. Isso também impedirá a execução do procedimento errado se um banco de dados tiver procedimentos com o mesmo nome em vários esquemas.

    O exemplo a seguir mostra o método recomendado para executar um procedimento armazenado definido pelo usuário. Observe que o procedimento aceita um parâmetro de entrada. Para obter informações sobre como especificar parâmetros de entrada e saída, consulte Especificar parâmetros.

    USE AdventureWorks2012;
    GO
    EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50;
    

    -Ou-

    EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50;
    GO
    

    Se um procedimento não qualificado definido pelo usuário for especificado, o Mecanismo de Banco de Dados pesquisará o procedimento na seguinte ordem:

    1. Esquema sys do banco de dados atual.

    2. O esquema padrão do chamador se executado em um lote ou em SQL dinâmico. Ou, se o nome do procedimento não qualificado aparecer no corpo da definição de outro procedimento, o esquema que contém esse outro procedimento será pesquisado a seguir.

    3. Esquema dbo no banco de dados atual.

  • Procedimentos armazenados executados automaticamente

    Os procedimentos marcados para execução automática são executados sempre que o SQL Server é iniciado e o banco de dados mestre é recuperado durante esse processo de inicialização. A configuração dos procedimentos para execução automática pode ser útil para executar operações de manutenção de banco de dados ou para que os procedimentos sejam executados continuamente como processos em segundo plano. Um outro uso para a execução automática é o procedimento realizar tarefas do sistema ou de manutenção no tempdb, tal como criar uma tabela temporária global. Isso garante que essa tabela temporária existirá sempre que o tempdb for recriado quando o SQL Server for iniciado.

    Um procedimento executado automaticamente funciona com as mesmas permissões dos membros da função de servidor fixa do sysadmin. Qualquer mensagem de erro gerada pelo procedimento é gravada no log de erros do SQL Server.

    Não há limite para o número de procedimentos de inicialização que você pode ter, porém lembre-se de que cada um consome um thread de trabalho durante a execução. Se precisar executar vários procedimentos na inicialização, mas, se não for necessário executá-los em paralelo, torne um procedimento o procedimento de inicialização e faça com que este procedimento chame os demais. Isto usará apenas um thread de trabalho.

    DicaDica

    Não retorne nenhum conjunto de resultados de um procedimento executado automaticamente. Como o procedimento armazenado é executado pelo SQL Server, em vez de pelo aplicativo ou usuário, os conjuntos de resultados não têm para onde ir.

  • Configurando, limpando e controlando a execução automática

    Somente o administrador de sistema (sa) pode marcar um procedimento para ser executado automaticamente. Além disso, o procedimento armazenado deve estar no banco de dados mestre, pertencer ao sa e não deverá conter parâmetros de entrada ou de saída.

    Use sp_procoption para:

    1. Determinar um procedimento existente como um procedimento de inicialização.

    2. Interromper a execução de um procedimento na inicialização do SQL Server.

Segurança

Para obter mais informações, consulte EXECUTE AS (Transact-SQL) e Cláusula EXECUTE AS (Transact-SQL).

Permissões

Para obter mais informações, consulte a seção "Permissões" em EXECUTE (Transact-SQL).

Ícone de seta usado com o link Voltar ao Início[Início]

Usando o SQL Server Management Studio

Para executar um procedimento armazenado

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server, expanda essa instância e expanda Bancos de Dados.

  2. Expanda o banco de dados desejado, expanda Programabilidade e expanda Procedimentos Armazenados.

  3. Clique com o botão direito do mouse no procedimento armazenado definido pelo usuário desejado e clique em Executar Procedimento Armazenado.

  4. Na caixa de diálogo Executar Procedimento, especifique um valor para cada parâmetro e se ele deve passar um valor nulo.

    • Parâmetro
      Indica o nome do parâmetro.

    • Tipo de dados
      Indica o tipo de dados do parâmetro.

    • Parâmetro de Saída
      Indica se este é um parâmetro de saída.

    • Passar Valor Nulo
      Passe um NULL como valor do parâmetro.

    • Valor
      Digite o valor do parâmetro ao chamar o procedimento.

  5. Para executar o procedimento armazenado, clique em OK.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando Transact-SQL

Para executar um procedimento armazenado

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo mostra como executar um procedimento armazenado que espera um parâmetro. O exemplo executa o procedimento armazenado uspGetEmployeeManagers com o valor 6 especificado como o parâmetro @EmployeeID.

USE AdventureWorks2012;
GO
EXEC dbo.uspGetEmployeeManagers 6;
GO

Para definir ou limpar um procedimento para execução automática

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo mostra como usar sp_procoption para definir um procedimento para execução automática.

USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>' 
    , @OptionName = ] 'startup' 
    , @OptionValue = 'on';

Para interromper a execução de um procedimento automaticamente

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo mostra como usar sp_procoption para interromper a execução automática de um procedimento.

USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>' 
    , @OptionValue = 'off';

Exemplo (Transact-SQL)

Ícone de seta usado com o link Voltar ao Início[Início]

Consulte também

Referência

EXECUTE (Transact-SQL)

CREATE PROCEDURE (Transact-SQL)

Conceitos

Especificar parâmetros

Configurar a opção de configuração de servidor scan for startup procs

Procedimento armazenados (Mecanismo de Banco de Dados)