Oracle 所有程序视图都没有';不显示程序名称
为什么我不能在Oracle 所有程序视图都没有';不显示程序名称,oracle,stored-procedures,plsql,view,metadata,Oracle,Stored Procedures,Plsql,View,Metadata,为什么我不能在user\u procedures视图中查看我的过程?为什么procedure\u name过滤器在all\u procedures视图中不返回任何行 这个问题主要是为了帮助那些正在寻找类似问题的人。我希望任何想知道这个问题的人都能在这里找到答案 测试用例: SQL> show user USER is "LALIT" SQL> CREATE OR REPLACE 2 PROCEDURE new_proc 3 AS 4 BEGIN 5 NUL
user\u procedures
视图中查看我的过程?为什么procedure\u name
过滤器在all\u procedures
视图中不返回任何行
这个问题主要是为了帮助那些正在寻找类似问题的人。我希望任何想知道这个问题的人都能在这里找到答案
测试用例:
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 procedure_name='NEW_PROC';
no rows selected
SQL>
从
所有_程序列出所有功能和程序,以及
关联属性。例如,所有_程序都指示
函数是否为流水线、并行启用或聚合函数
功能。如果函数是流水线函数或聚合函数,则
还标识了相关的实现类型(如果有)
它不清楚它是否列出一个“强”独立的程序以及一个在<>强>包<强>中的相同的方法,或者是不同的考虑。因为,
procedure\u name
不会列出独立程序的名称,如上面问题中的测试用例所示
PROCEDURE\u 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>
只有将过程包装在包中时,才能使用过程名称获取过程列表
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>
现在您可以将过程名称视为实际过程,将对象名称视为包名称
当然,在大多数生产系统中,我们都会有软件包,而不是独立的程序。但是,在测试和演示时,我们确实编译并运行独立的过程。因此,了解Oracle如何在*\u过程视图中维护信息是很好的
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>