Partilhar via


Executar um procedimento armazenado

Este tópico descreve como executar um procedimento armazenado no SQL Server 2014 usando SQL Server Management Studio ou 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 pode ser chamado e executado sem o palavra-chave se o procedimento for a primeira instrução no lote Transact-SQL.

Neste tópico

Antes de começar

Limitações e Restrições

  • A ordenação de banco de dados de chamada é usada 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 uma ordenação 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 do 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, veja 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. O esquema dbo no banco de dados atual.

  • Procedimentos armazenados executados automaticamente

    Os procedimentos marcados para execução automática são executados sempre que SQL Server é iniciado e o banco de dados master é 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 sempre existirá quando o tempdb for recriado durante SQL Server inicialização.

    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.

    Dica

    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 sae 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, veja EXECUTE AS (Transact-SQL) e Cláusula EXECUTE AS (Transact-SQL).

Permissões

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

Como usar 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 Programabilidadee 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.

Usando o 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 uspGetEmployeeManagers procedimento armazenado com o valor 6 especificado como o @EmployeeID parâmetro .

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)

Consulte Também

Especificar parâmetros
Configurar a opção de configuração do servidor scan for startup procs
EXECUTE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
Procedimento armazenados (Mecanismo de Banco de Dados)