Z dokumentacji,
ALL_PROCEDURES wyświetla listę wszystkich funkcji i procedur wraz z powiązanymi właściwościami. Na przykład ALL_PROCEDURES wskazuje, czy funkcja jest potokowa, włączona równoległa czy funkcja agregująca. Jeśli funkcja jest funkcją potokową lub funkcją agregującą, identyfikowany jest również powiązany typ implementacji (jeśli istnieje).
Nie wyjaśnia, czy wymieniłby PROCEDURĘ SAMODZIELNĄ i procedura opakowana w PAKIET w ten sam sposób, czy też traktuje to inaczej. Ponieważ procedure_name
nie wymieniłby nazwy samodzielnej procedury, jak widać w przypadku testowym w powyższym pytaniu.
PROCEDURE_NAME
kolumna będzie miała tylko nazwę procedury dla procedur, które są częścią PACKAGE
. W przypadku PROCEDUR SAMODZIELNYCH musisz użyć 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>
Możesz uzyskać listę procedur używając procedury nazwa_procedury tylko wtedy, gdy jest ona opakowana w pakiet.
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>
Teraz możesz zobaczyć nazwę_procedury jako właściwą procedurę, a nazwa_obiektu jako nazwę_pakietu.
Oczywiście najczęściej w systemach produkcyjnych mielibyśmy pakiety, a nie samodzielne procedury. Ale podczas testów i wersji demonstracyjnych kompilujemy i uruchamiamy samodzielne procedury. Dlatego dobrze jest wiedzieć, w jaki sposób Oracle przechowuje informacje w widokach *_PROCEDURES .