Procedimiento almacenado v/s Función Los procedimientos y funciones comparten varias características: • • • • •
Ambos pueden devolver más de un valor a través de parámetros con modo OUT. Ambos pueden tener secciones declarativas, ejecutables y de tratamientos de excepciones. Ambos aceptan valores predeterminados. Ambos pueden llamarse utilizando la notación posicional o nominal* Ambos pueden aceptar parámetros NOCOPY
Entonces, ¿Cuándo utilizamos una función y cuando un procedimiento almacenado? 1.- generalmente depende del número de valores a devolver y de cómo se utilicen dichos valores. Entonces, como regla general: • •
Si se devuelve más de un valor: Procedimiento Almacenado. Si es un solo valor: Función. (aunque existen excepciones, como los parámetros con modo OUT, permitidos en las Funciones, por lo que se puede devolver más de un valor).
Cuando un programa se crea con CREATE OR REPLACE, se almacena en el diccionario de datos, además del texto fuente, el subprograma se almacena en su forma compilada, que se conoce como “código-p”. El código-p tiene evaluada todas las referencias que se encuentran en el subprograma, se lee el código-p del disco (si es necesario), y se ejecuta. Una vez que se ha leído de disco, el código-p se almacena en la parte de la memoria compartida del área global del sistema (SGA), dónde múltiples usuarios pueden acceder al código-p si lo necesitan. Como todos los contenidos del área compartida, el código-p está sujeto a las reglas de expulsión del área compartida, de acuerdo al algoritmo LRU (menos recientemente usado).