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,
OUTLos 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. UsandoOUTEl 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í.