Dalla documentazione,
ALL_PROCEDURES elenca tutte le funzioni e le procedure, insieme alle proprietà associate. Ad esempio, ALL_PROCEDURES indica se una funzione è in pipeline, abilitata in parallelo o una funzione aggregata. Se una funzione è in pipeline o una funzione aggregata, viene identificato anche il tipo di implementazione associato (se presente).
Non chiarisce se elencherebbe una PROCEDURA STAND ALONE e una procedura racchiusa in un PACCHETTO allo stesso modo o lo considera in modo diverso. Poiché, il procedure_name
non elencherebbe il nome di una procedura autonoma come si vede nel test case nella domanda precedente.
PROCEDURE_NAME
colonna conterrà solo il nome della procedura per le procedure che fanno parte di un PACKAGE
. Per le PROCEDURE STAND ALONE devi utilizzare 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>
Puoi ottenere l'elenco delle procedure usando nome_procedura solo se è racchiuso in un pacchetto.
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>
Ora puoi vedere il nome_procedura come la procedura effettiva e il nome_oggetto come il nome_pacchetto.
Naturalmente, per lo più nei sistemi di produzione avremmo pacchetti e non procedure autonome. Ma, durante i test e le demo, compiliamo ed eseguiamo procedure autonome. Pertanto, è utile sapere in che modo Oracle conserva le informazioni nelle *_PROCEDURES views .