Stored Procedure vs Function
Os 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 funções e pacotes de procedimentos ou consultas SQL. Ambos os 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 procedimento procedurename (parâmetros)
como
começo
instruções;
exceção
manuseio_exceção
end;
E aqui está a sintaxe para criar uma função (no ORACLE), criar ou substituir função function_name (parâmetros)
return return_datatype
como
começo
instruções;
return return_value/variable;
exceção;
exceção_handling;
end;
Procedimentos armazenados
Como mencionado acima, os procedimentos armazenados são denominados blocos de programação. Eles aceitam parâmetros como entrada do usuário e processam 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 chamadas de funções/procedimentos/pacotes podem estar dentro do corpo dos procedimentos.
Funções
Funções também são blocos de programação nomeados, 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 serem executados. 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 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 (Ex: TO_CHAR, TO_DATE)
- Função de coleção (Ex: CARDINALIDADE, 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 de modelo
- Funções definidas pelo usuário
Qual é a diferença entre função e procedimento armazenado?
• Todas as funções devem retornar um valor usando a instrução RETURN. Os procedimentos armazenados não retornam valores usando a instrução RETURN. A instrução RETURN dentro de um procedimento retornará seu controle ao programa chamador. Parâmetros OUT podem ser usados para retornar valores de procedimentos armazenados.
• Funções podem ser chamadas dentro das consultas, mas 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 DDL de procedimento armazenado, não é.