【问题标题】:Get a list of all functions and procedures in an Oracle database获取 Oracle 数据库中所有函数和过程的列表
【发布时间】:2010-12-21 14:59:48
【问题描述】:

我正在比较三个 Oracle 模式。

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

理想情况下,最好有一个带有标志的查询,该标志表明函数/过程是否在每个模式中。但即使只是开始也比手动检查每个模式要好。

【问题讨论】:

    标签: oracle plsql oracle9i


    【解决方案1】:
    SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE')
    

    STATUS 列告诉您对象是 VALID 还是 INVALID。如果无效,你必须尝试重新编译,ORACLE无法告诉你它是否可以工作。

    【讨论】:

    • 'TABLE' 有人可以提示如何删除函数/过程/包吗?
    • drop function xxx, drop procedure xyz, drop package foobar
    • 有人建议对我的回答进行编辑,这样SELECT 语句将只选择OBJECT_NAME 而不是*。无论如何,此编辑已被拒绝(被我以外的审阅者拒绝); IMO,至少,应该选择OBJECT_NAME, OBJECT_TYPE, STATUS 以获得有用的输出。也就是说,SELECT * 在这种情况下不会受到伤害。
    • 如果您有多个用户,并且只想列出该用户的对象,只需添加另一个子句“AND OWNER =[THAT USER NAME]”。 “user1”的示例:SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE') AND OWNER = 'user1'
    • 如果你想比较一个包中的函数和过程,这个答案是不够的。
    【解决方案2】:

    对 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

    【讨论】:

      【解决方案3】:
       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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-30
        • 1970-01-01
        • 2019-04-12
        • 1970-01-01
        • 2014-02-25
        • 1970-01-01
        • 2012-01-29
        • 2023-03-24
        相关资源
        最近更新 更多