ALL_PROCEDURES视图不显示PROCEDURE_NAME
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ALL_PROCEDURES视图不显示PROCEDURE_NAME相关的知识,希望对你有一定的参考价值。
为什么我在user_procedures
视图中看不到我的程序?为什么procedure_name
视图上的all_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>
ALL_PROCEDURES列出所有功能和过程,以及相关属性。例如,ALL_PROCEDURES指示是否功能是否已管线化,并行启用或聚合功能。如果函数是流水线的或聚合函数,则关联的实现类型(如果有)也被标识。
它并不清楚是否会以相同的方式列出STAND ALONE PROCEDURE和包裹在PACKAGE中的过程,还是以不同的方式列出它。因为,procedure_name
不会列出上述问题的测试用例中看到的独立过程的名称。
PROCEDURE_NAME
列将仅具有PACKAGE
一部分过程的过程名称。对于STAND ALONE PROCEDURES,您需要使用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包装在程序包中时,您才能使用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如何在* PROPRODURES视图中维护信息。
以上是关于ALL_PROCEDURES视图不显示PROCEDURE_NAME的主要内容,如果未能解决你的问题,请参考以下文章
Home / Python MySQL Tutorial / Calling MySQL Stored Procedures in Python Calling MySQL Stored Proced