Sql 如何获取Oracle 9i特定架构中所有用户创建的存储过程和函数的列表?

Sql 如何获取Oracle 9i特定架构中所有用户创建的存储过程和函数的列表?,sql,database,oracle,Sql,Database,Oracle,我在这个遗留数据库中有一些用户创建的存储过程和函数。我如何列出一个特定模式的所有过程和函数,比如SCHEMA1。模式和用户在Oracle中有点同义 如果要列出特定架构中的所有过程和函数,请查询: 用户对象:如果您以用户身份登录,则需要查询对象列表 所有对象:您需要使用所有者进行筛选 比如说, SELECT * FROM user_objects WHERE object_type IN('FUNCTION', 'PROCEDURE'); 挑选* 来自用户对象 对象类型在哪里 在(‘

我在这个遗留数据库中有一些用户创建的存储过程和函数。我如何列出一个特定模式的所有过程和函数,比如SCHEMA1。

模式和用户在Oracle中有点同义

如果要列出特定架构中的所有过程和函数,请查询:

  • 用户对象:如果您以用户身份登录,则需要查询对象列表
  • 所有对象:您需要使用所有者进行筛选
  • 比如说,

    SELECT * FROM user_objects WHERE object_type IN('FUNCTION', 'PROCEDURE'); 挑选* 来自用户对象 对象类型在哪里 在(‘功能’、‘程序’)中; 或者

    选择* 从所有对象 对象类型在哪里 IN('函数','过程') 和所有者='your_schema_name'; 确保以大写形式传递所需的值

    更新

    从这里的文档中

    所有程序

    所有_程序列出所有功能和程序,以及 关联属性。例如,所有_程序都指示 函数是否为流水线、并行启用或聚合函数 功能。如果函数是流水线函数或聚合函数,则 还标识了相关的实现类型(如果有)

    因此,您也可以根据文档使用用户程序查看

    注意


    请注意有关
    *\u程序的一些事项。您需要注意该过程是独立的还是包装在包中。我在这里写了一篇基于相同的文章

    如果你想查看所有程序的列表,那么-

    SELECT * FROM ALL_PROCEDURES WHERE OWNER = 'SCHEMA1';
    
    当然,这假设您有权查看SCHEMA1的过程/函数/包

    但是,如果您拥有DBA特权,那么您也可以这样做-

    SELECT * from DBA_PROCEDURES WHERE OWNER = 'SCHEMA1';
    

    如果您希望在过程中包含代码,请查找所有源代码或DBA源代码。

    接收此信息的最佳方式:

  • 以SYSDBA的身份登录
  • 查询
    dba\u源代码
  • SQL:


    取决于您希望在列表中看到的对象。更多细节请参见我的答案。
    SELECT * from DBA_PROCEDURES WHERE OWNER = 'SCHEMA1';
    
    select distinct NAME from dba_source
    where  TYPE in ('FUNCTION','PROCEDURE')
    and    OWNER = 'SCHEMA_NAME';