La diferencia es:una función debe devolver un valor (de cualquier tipo) por definición predeterminada, mientras que en el caso de un procedimiento necesita usar parámetros como OUT
o IN OUT
parámetros para obtener los resultados. Puede usar una función en un SQL
normal donde como no puede usar un procedimiento en SQL
declaraciones.
Algunas diferencias entre funciones y procedimientos
-
Una función siempre devuelve un valor utilizando la declaración de retorno, mientras que un procedimiento puede devolver uno o más valores a través de parámetros o puede no devolver nada. Aunque,
OUT
Los parámetros aún se pueden usar en funciones, no son recomendables ni hay casos en los que se pueda encontrar la necesidad de hacerlo. UsandoOUT
El parámetro restringe el uso de una función en una instrucción SQL. -
Las funciones se pueden usar en declaraciones SQL típicas como
SELECT
,INSERT
,UPDATE
,DELETE
,MERGE
, mientras que los procedimientos no pueden. -
Las funciones normalmente se usan para cálculos, mientras que los procedimientos normalmente se usan para ejecutar la lógica comercial.
-
Oracle proporciona la posibilidad de crear "Índices basados en funciones" para mejorar el rendimiento de la declaración SQL posterior. Esto se aplica cuando se realiza la función en una columna indexada en la cláusula where de una consulta.
Más información sobre funciones vs. Trámites aquí y aquí.