Conceitos básicos de procedimento armazenado

Procedimentos armazenados em Microsoft SQL Server são semelhantes a procedimentos em outras linguagens de programação em que eles podem:

  • Aceitar parâmetros de entrada e retornar vários valores no formulário de parâmetros de saída ao procedimento de chamada ou lote.

  • Conter instruções de programação que executam operações no banco de dados, inclusive chamar outros procedimentos.

  • Retornar um valor de status a um procedimento de chamada ou lote para indicar êxito ou falha (e o motivo da falha).

Você pode usar a instrução Transact-SQL EXECUTE para executar um procedimento armazenado. Procedimentos armazenados são diferentes das funções em que eles não retornam valores no lugar dos nomes e não podem ser usados diretamente em uma expressão.

Os benefícios de usar procedimentos armazenados no SQL Server em vez de programas Transact-SQL armazenados localmente em computadores cliente são:

  • Eles são registrados no servidor.

  • Eles podem ter atributos de segurança (como permissões) e encadeamento de propriedade, além de poderem ter certificados anexados a eles.

    Os usuários podem receber permissão para executar um procedimento armazenado sem ter permissão direta nos objetos referenciados no procedimento.

  • Eles podem aumentar a segurança de seu aplicativo.

    Procedimentos armazenados com parâmetros podem ajudar a proteger seu aplicativo de ataques ao SQL Injection. Para obter mais informações, consulte SQL Injection.

  • Eles permitem programação modular.

    Você pode criar o procedimento uma vez e chamá-lo a qualquer momento em seu programa. Isso pode melhorar a facilidade de manutenção de seu aplicativo e pode permitir que aplicativos acessem o banco de dados de uma maneira uniforme.

  • Eles são códigos nomeados que permitem associação atrasada.

    Isso fornece um nível de erro para evolução de código fácil.

  • Eles podem reduzir o tráfego de rede.

    Uma operação que requer centenas de linhas de código Transact-SQL pode ser realizada por meio de uma instrução simples que executa o código em um procedimento, ao invés de enviar centenas de linhas de código à rede.