De la documentación,
ALL_PROCEDURES enumera todas las funciones y procedimientos, junto con las propiedades asociadas. Por ejemplo, ALL_PROCEDURES indica si una función está canalizada o no, está habilitada en paralelo o es una función agregada. Si una función está canalizada o es una función agregada, también se identifica el tipo de implementación asociado (si lo hay).
No aclara si incluiría un PROCEDIMIENTO INDEPENDIENTE y un procedimiento envuelto en un PAQUETE de la misma manera o lo considera de otra manera. Dado que, el procedure_name
no incluiría el nombre de un procedimiento independiente como se ve en el caso de prueba en la pregunta anterior.
PROCEDURE_NAME
la columna solo tendrá el nombre del procedimiento para los procedimientos que forman parte de un PACKAGE
. Para PROCEDIMIENTOS INDEPENDIENTES necesita usar OBJECT_NAME .
SQL> show user
USER is "LALIT"
SQL> CREATE OR REPLACE
2 PROCEDURE new_proc
3 AS
4 BEGIN
5 NULL;
6 END;
7 /
Procedure created.
SQL>
SQL> SELECT owner,
2 object_name,
3 procedure_name,
4 object_type
5 FROM all_procedures
6 WHERE owner='LALIT'
7 AND object_name='NEW_PROC';
OWNER OBJECT_NAME PROCEDURE_NAME OBJECT_TYPE
----- --------------- --------------- ---------------
LALIT NEW_PROC PROCEDURE
SQL>
Puede obtener la lista de procedimientos usando nombre_procedimiento solo si está envuelto en un paquete.
SQL> -- package
SQL> CREATE OR REPLACE
2 PACKAGE new_pack
3 IS
4 PROCEDURE new_proc;
5 END new_pack;
6 /
Package created.
SQL>
SQL> -- package body with a procedure
SQL> CREATE OR REPLACE
2 PACKAGE BODY new_pack
3 IS
4 PROCEDURE new_proc
5 IS
6 BEGIN
7 NULL;
8 END;
9 END new_pack;
10 /
Package body created.
SQL> SELECT owner,
2 object_name,
3 procedure_name,
4 object_type
5 FROM all_procedures
6 WHERE owner='LALIT'
7 AND procedure_name='NEW_PROC';
OWNER OBJECT_NAME PROCEDURE_NAME OBJECT_TYPE
----- --------------- --------------- -----------
LALIT NEW_PACK NEW_PROC PACKAGE
SQL>
Ahora podría ver el nombre_del_procedimiento como el procedimiento real y el nombre_del_objeto como el nombre_del_paquete.
Por supuesto, en la mayoría de los sistemas de producción tendríamos paquetes y no procedimientos independientes. Pero, mientras realizamos pruebas y demostraciones, compilamos y ejecutamos procedimientos independientes. Por lo tanto, es bueno saber cómo Oracle mantiene la información en *_PROCEDURES vistas .