Da documentação,
ALL_PROCEDURES lista todas as funções e procedimentos, juntamente com as propriedades associadas. Por exemplo, ALL_PROCEDURES indica se uma função está ou não em pipeline, habilitada em paralelo ou uma função agregada. Se uma função for pipeline ou uma função agregada, o tipo de implementação associado (se houver) também será identificado.
Ele não esclarece se listaria um PROCEDIMENTO INDEPENDENTE e um procedimento envolto em um PACKAGE da mesma forma ou considera-o de forma diferente. Desde então, o
procedure_name
não listaria o nome de um procedimento autônomo como visto no caso de teste na pergunta acima. PROCEDURE_NAME
coluna terá apenas o nome do procedimento para os procedimentos que fazem parte de um PACKAGE
. Para PROCEDIMENTOS INDEPENDENTES, você precisa 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>
Você pode obter a lista de procedimentos usando procedure_name somente se estiver em um pacote.
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>
Agora você pode ver o procedure_name como o procedimento real e o object_name como o package_name.
Claro que, principalmente em sistemas de produção, teríamos pacotes, e não procedimentos isolados. Mas, enquanto testamos e demos, compilamos e executamos procedimentos autônomos. Portanto, é bom saber como a Oracle mantém as informações em *_PROCEDURES views .