Aus Dokumentation,
ALL_PROCEDURES listet alle Funktionen und Prozeduren zusammen mit den zugehörigen Eigenschaften auf. Beispielsweise zeigt ALL_PROCEDURES an, ob eine Funktion Pipeline-fähig, parallel aktiviert oder eine Aggregatfunktion ist oder nicht. Wenn es sich bei einer Funktion um eine Pipeline- oder eine Aggregatfunktion handelt, wird auch der zugeordnete Implementierungstyp (sofern vorhanden) identifiziert.
Es wird nicht klargestellt, ob es ein EIGENSTÄNDIGES VERFAHREN auflisten würde und eine Prozedur, die in ein PAKET verpackt ist genauso oder hält sie es anders. Da der procedure_name
würde den Namen eines eigenständigen Verfahrens nicht auflisten, wie es im Testfall in der obigen Frage zu sehen ist.
PROCEDURE_NAME
Spalte enthält nur den Prozedurnamen für die Prozeduren, die Teil eines PACKAGE
sind . Für EIGENSTÄNDIGE VERFAHREN müssen Sie OBJECT_NAME verwenden .
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>
Sie können die Liste der Prozeduren nur mit Prozedurname abrufen, wenn sie in ein Paket eingeschlossen ist.
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>
Jetzt könnten Sie den Prozedurnamen als eigentlichen Vorgang und den Objektnamen als Paketnamen sehen.
Natürlich hätten wir in Produktionssystemen meistens Pakete und keine eigenständigen Prozeduren. Aber während der Tests und Demos kompilieren und führen wir eigenständige Prozeduren aus. Daher ist es gut zu wissen, wie Oracle die Informationen in *_PROCEDURES-Ansichten verwaltet .