(Oracle) 如何获取程序包中的过程、函数列表?

(Oracle) How to get list of procedure, function in package?

RHEL5 上的 Oracle 11gR2

如何获取程序包中的过程、函数列表?

例如,有两个包。

PACKAGE pkg1  
  PROCEDURE pkg1_pro1 ~~
  PROCEDURE pkg1_pro2 ~~
  FUNCTION pkg1_func1 ~~

PACKAGE pkg2
  PROCEDURE pkg2_pro1 ~~
  FUNCTION pkg2_func1 ~~
  FUNCTION pkg2_func2 ~~

然后,有RESULT。

SELECT blah, blah
FROM blah
WHERE package_name = 'PKG1'


Package_name    Type        Name
PKG1            PROCEDURE   pkg1_pro1
PKG1            PROCEDURE   pkg1_pro2
PKG1            FUNCTION    pkg1_func1

怎么做?

SELECT OBJECT_NAME AS "Package_name",OBJECT_TYPE AS "TYPE",PROCEDURE_NAME as "Name"
FROM ALL_PROCEDURES
WHERE owner     = 'Your Owner'
AND object_name = 'YOUR_PACKAGE';

编辑:

 SELECT A.OBJECT_NAME AS "Package_name",
  A.PROCEDURE_NAME AS "TYPE",
  B.OBJECT_TYPE as "Name"
FROM ALL_PROCEDURES A,
  ALL_OBJECTS B
WHERE A.OWNER='YOUR OWNER'
and A.OBJECT_NAME ='YOUR PACKAGE'
AND a.procedure_name=b.object_name;

下面的查询将提供包中存在的所有对象

 SELECT  D.PACKAGE_NAME,D.OBJECT_NAME,A.OBJECT_TYPE
    FROM dba_arguments D
    INNER JOIN
    ALL_OBJECTS A
    ON
    A.OBJECT_NAME=D.OBJECT_NAME
    AND A.owner=D.OWNER
      WHERE
      D.OWNER='OWNER_NAME' AND
      D.PACKAGE_NAME='PACKAGE_NAME'

确保 owner_name 和 package_name 是大写字母。