Função vs. Procedimento Armazenado no SQL Server

I'tenho aprendido Funções e Procedimentos Armazenados por um bom tempo, mas não sei porquê e quando devo usar uma função ou um procedimento armazenado. Eles me parecem iguais, talvez porque eu seja um pouco novato sobre isso.

Alguém me pode dizer porquê?

Solução

As funções são valores computados e não podem realizar alterações ambientais permanentes no SQL Server (ou seja, não são permitidas instruções INSERT ou UPDATE).

Uma função pode ser usada inline em instruções SQL se retornar um valor escalar, ou pode ser unida se retornar um conjunto de resultados.

Um ponto digno de nota dos comentários, que resumem a resposta. Graças a @Sean K Anderson:

As funções seguem a definição de informática-ciência na medida em que devem retornar um valor e não podem alterar os dados que recebem como parâmetros (os argumentos). As funções não podem mudar nada, devem têm pelo menos um parâmetro, e devem devolver um valor. Armazenado os procs não precisam de ter um parâmetro, podem modificar objectos de base de dados, e não têm de devolver um valor.

Comentários (12)

Escreva uma função definida pelo usuário quando quiser calcular e retornar um valor para uso em outras instruções SQL; escrever um procedimento armazenado quando quiser é agrupar um conjunto possivelmente complexo de instruções SQL. Estes são dois casos de uso bastante diferentes, afinal de contas!

Comentários (1)

Para decidir quando usar o que os seguintes pontos podem ajudar.

  1. Os procedimentos armazenados não podem retornar uma variável de tabela onde como função pode fazer isso.

  2. Você pode usar procedimentos armazenados para alterar os parâmetros do ambiente do servidor onde como usando funções você não pode.

vivas

Comentários (0)