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

时间:2015-03-02 14:24:01

标签: sql database oracle

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

3 个答案:

答案 0 :(得分:2)

架构和用户在Oracle中有点同义。

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

  1. user_objects :如果您以要查询对象列表的用户身份登录。
  2. all_objects :您需要使用 OWNER 进行过滤。
  3. 例如,

    SELECT *
      FROM user_objects
     WHERE object_type 
       IN('FUNCTION', 'PROCEDURE');
    

    或者,

    SELECT * 
      FROM ALL_OBJECTS 
     WHERE OBJECT_TYPE 
       IN ('FUNCTION','PROCEDURE')
    AND OWNER = 'your_schema_name';
    

    确保以大写形式传递所需的值。

    <强>更新

    来自此处的文档http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2025.htm

      

    ALL_PROCEDURES

         

    ALL_PROCEDURES列出了所有功能和程序,以及   相关属性。例如,ALL_PROCEDURES指示是否   或者不是功能是流水线,并行启用或聚合   功能。如果函数是流水线或聚合函数,则   还确定了相关的实施类型(如果有的话)。

    因此,您还可以根据文档使用 user_procedures 视图。

    注意

    请注意关于*_procedures的一些事项。您需要注意该过程是独立的还是包含在包中。我在Unable to find procedure in DBA_PROCEDURES view

    写了一篇基于相同文章的文章

答案 1 :(得分:2)

如果您想查找所有程序的清单,那么 -

SELECT * FROM ALL_PROCEDURES WHERE OWNER = 'SCHEMA1';

这当然假设您有权查看SCHEMA1的过程/功能/包。

如果您拥有DBA权限,那么您也可以 -

SELECT * from DBA_PROCEDURES WHERE OWNER = 'SCHEMA1';

如果你想要程序中的代码,那么查找ALL_SOURCE或DBA_SOURCE。

答案 2 :(得分:0)

接收此信息的最佳方式:

  1. SYSDBA
  2. 身份登录
  3. 查询dba_source
  4. SQL:

    select distinct NAME from dba_source
    where  TYPE in ('FUNCTION','PROCEDURE')
    and    OWNER = 'SCHEMA_NAME';