首页 文章

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

提问于
浏览
41

我正在比较三个Oracle模式 .

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

理想情况下,使用一个标志来指示函数/过程是否在每个模式中都是很好的 . 但即使只是第一位也比手动检查每个模式更好 .

2 回答

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

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

  • 85

    对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

相关问题