Diferença entre procedimento armazenado e função

Procedimento Armazenado vs Função
 

Procedimentos e funções armazenados são dois tipos de blocos de programação. Ambos devem ter nomes de chamada. Esses nomes de chamada são usados ​​para chamá-los dentro de outro bloco de programação, como procedimentos, funções e pacotes ou consultas SQL. Esses dois tipos de objetos aceitam parâmetros e executam a tarefa por trás desses objetos. Esta é a sintaxe (no ORACLE) para criar um procedimento armazenado,

 criar ou substituir o procedimento nome do procedimento (parâmetros)

 Como

 início

     afirmações;

 exceção

     manipulação de exceção

 fim;

E aqui está a sintaxe para criar uma função (no ORACLE),

criar ou substituir a função nome_da_função (parâmetros)

return return_datatype

Como

início

afirmações;

return return_value / variável;

exceção;

manipulação de exceção;

fim;

Procedimentos armazenados

Como mencionado acima, os procedimentos armazenados são chamados de blocos de programação. Eles aceitam parâmetros como entrada e processo do usuário de acordo com a lógica por trás do procedimento e fornecem o resultado (ou executam uma ação específica). Esses parâmetros podem ser do tipo IN, OUT e INOUT. Declarações de variáveis, atribuições de variáveis, instruções de controle, loops, consultas SQL e outras funções / chamadas de procedimento / pacote podem estar dentro do corpo dos procedimentos.

Funções

As funções também são denominadas blocos de programação, que devem retornar um valor usando a instrução RETURN e, antes de retornar um valor, seu corpo também executa algumas ações (de acordo com a lógica fornecida). As funções também aceitam parâmetros para execução. As funções podem ser chamadas dentro das consultas. Quando uma função é chamada dentro de uma consulta SELECT, ela se aplica a cada linha do conjunto de resultados da consulta SELECT. Existem várias categorias de funções do ORACLE. Eles são,

  • Funções de linha única (retorna um único resultado para cada linha da consulta)

Existem subcategorias de funções de uma única linha.

  • Função numérica (Ex: ABS, SIN, COS)
  • Função de caractere (Ex: CONCAT, INITCAP)
  • Função de data e hora (Ex: LAST_DAY, NEXT_DAY)
  • Funções de conversão (por exemplo: TO_CHAR, TO_DATE)
  • Função de coleta (Ex: CARDINALITY, SET)
  • Funções agregadas (retorna uma única linha, com base em um grupo de linhas. Ex: AVG, SUM, MAX)
  • Funções analíticas
  • Funções de referência de objeto
  • Funções do modelo
  • Funções definidas pelo usuário

Qual é a diferença entre function e Stored Procedure?

• Todas as funções devem retornar um valor usando a instrução RETURN. Procedimentos armazenados não retornam valores usando a instrução RETURN. A instrução RETURN dentro de um procedimento retornará seu controle ao programa de chamada. Os parâmetros OUT podem ser usados ​​para retornar valores de procedimentos armazenados.

• As funções podem ser chamadas dentro das consultas, mas os procedimentos armazenados não podem ser usados ​​dentro das consultas.

• O tipo de dados RETURN deve ser incluído para criar uma função, mas no procedimento armazenado DDL, não é.