获取Oracle数据库中所有函数和过程的列表

时间:2009-11-30 12:11:41

标签: oracle plsql oracle9i

我正在比较三种Oracle模式。

我想获得每个数据库中使用的所有函数和过程的列表。这可以通过查询吗? (最好包括一个关于它们是否编译的标志)

理想情况下,单个查询带有一个标志,表明函数/过程是否在每个模式中都会很棒。但即使只是第一位也比手动检查每个模式更好。

3 个答案:

答案 0 :(得分:92)

SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE')

列STATUS告诉您对象是VALID还是INVALID。如果它无效,你必须尝试重新编译,ORACLE不能告诉你它是否会起作用。

答案 1 :(得分:6)

对dba_arguments,dba_errors,dba_procedures,dba_objects,dba_source,dba_object_size进行描述。 其中每一部分都有部分图片,用于查看程序和功能。

对于包的dba_objects中的object_type也是定义的'PACKAGE'和'PACKAGE BODY'的 身体。

如果要比较同一数据库上的模式,请尝试:

select * from dba_objects 
   where schema_name = 'ASCHEMA' 
     and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )
minus
select * from dba_objects 
where schema_name = 'BSCHEMA' 
  and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )

并切换ASCHEMA和BSCHEMA的订单。

如果您还需要查看触发器并比较模式之间的其他内容,您应该查看Article on Ask Tom about comparing schemas

答案 2 :(得分:0)

 SELECT * FROM all_procedures WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE') 
 and owner = 'Schema_name' order by object_name

这里“ Schema_name”是模式的名称,示例我有一个名为PMIS的模式,因此示例将为

SELECT * FROM all_procedures WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE') 
and owner = 'PMIS' order by object_name

enter image description here

参考:https://www.plsql.co/list-all-procedures-from-a-schema-of-oracle-database.html