A diferença é que uma função deve retornar um valor (de qualquer tipo) por definição padrão dele, enquanto no caso de um procedimento você precisa usar parâmetros como
OUT
ou IN OUT
parâmetros para obter os resultados. Você pode usar uma função em um SQL
normal onde como você não pode usar um procedimento em SQL
declarações. Algumas diferenças entre funções e procedimentos
-
Uma função sempre retorna um valor usando a instrução return enquanto um procedimento pode retornar um ou mais valores por meio de parâmetros ou pode não retornar nada.Embora,OUT
parâmetros ainda podem ser usados em funções, eles não são aconselháveis nem há casos em que se possa encontrar a necessidade de fazê-lo. UsandoOUT
O parâmetro restringe o uso de uma função em uma instrução SQL.
-
As funções podem ser usadas em instruções SQL típicas comoSELECT
,INSERT
,UPDATE
,DELETE
,MERGE
, enquanto os procedimentos não podem.
-
As funções são normalmente usadas para cálculos, enquanto os procedimentos são normalmente usados para executar a lógica de negócios.
-
A Oracle oferece a possibilidade de criar "Índices Baseados em Função" para melhorar o desempenho da instrução SQL subsequente. Isso se aplica ao executar a função em uma coluna indexada na cláusula where de uma consulta.
Mais informações sobre funções vs. Procedimentos aqui e aqui.