От документация,
ALL_PROCEDURES изброява всички функции и процедури, заедно със свързаните свойства. Например ALL_PROCEDURES показва дали дадена функция е конвейерна, паралелно разрешена или агрегатна функция. Ако дадена функция е конвейерна или обобщена функция, асоциираният тип изпълнение (ако има такъв) също се идентифицира.
Не се изяснява дали ще изброява САМОСТОЯТЕЛНА ПРОЦЕДУРА и процедура, опакована в ОПАКОВКА по същия начин или го разглежда по различен начин. Тъй като procedure_name
няма да изброи името на самостоятелна процедура, както се вижда в тестовия случай във въпроса по-горе.
PROCEDURE_NAME
колоната ще има само името на процедурата за процедурите, които са част от PACKAGE
. За САМОТЕЖНИ ПРОЦЕДУРИ трябва да използвате 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>
Можете да получите списъка с процедури, като използвате procedure_name само ако е опакован в пакет.
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>
Сега можете да видите procedure_name като действителната процедура и object_name като package_name.
Разбира се, най-вече в производствените системи ще имаме пакети, а не самостоятелни процедури. Но докато тестваме и демонстрираме, ние компилираме и изпълняваме самостоятелни процедури. Затова е добре да знаете как Oracle поддържа информацията в *_PROCEDURES изгледи .