【问题标题】:How to get list of all the procedure inside a package oracle如何获取包 oracle 中所有过程的列表
【发布时间】:2012-01-29 01:29:58
【问题描述】:

我可以得到一个包中所有函数的名称吗? 假设我有一个包 PKG_OWA,我想列出包内的所有过程。

【问题讨论】:

  • 在包体内还是在规范中?
  • 我只想要正文列表。

标签: oracle plsql data-dictionary


【解决方案1】:

数据字典视图 ALL_PROCEDURES(或 USER_PROCEDURES,如果你只想要你的包)。 Find out more.

 select procedure_name
 from all_procedures
 where owner = 'YOU'
 and object_name = 'YOUR_PACKAGE'

这列出了包规范中公开的公共过程。除了处理源文本之外,没有简单的方法可以检索私有过程(即仅在包主体中指定的过程)。 Oracle 确实提供了一个实用程序 PL/SCOPE,我们可以使用它来收集这些信息,但它需要我们更改会话设置并重新编译我们的代码,因此它可能并不适合所有情况。 Find out more.

【讨论】:

    【解决方案2】:

    我用这个:

    您的包裹:

    SELECT *
    FROM ALL_OBJECTS
    WHERE OBJECT_TYPE = 'PACKAGE' 
        and owner = 'owner_name'
        and object_name = 'package_name'
    

    您的程序(仅来自规范,即全局):

    select *
     from all_procedures
     where owner = 'owner_name'
     and object_name = 'package_name'
    

    过程中的输入/输出参数:

    select * 
    from ALL_ARGUMENTS 
    where owner = 'owner_name'
        and package_name = 'package_name'
        and object_name = 'procedure_name'
    

    享受吧!

    【讨论】:

    • 已更新。非常感谢您提供 ALL_ARGUMENTS 参考资料。
    【解决方案3】:

    也许对某人有用,这也是一种找出包体上指定的过程和功能的方法。

    select name, 
           type,
           decode(usage,'DECLARATION', 'body only', 'DEFINITION', 'spec and body', usage) defined_on,
           line body_line
      from user_identifiers ui
      where type in ('PROCEDURE', 'FUNCTION')
      and usage_context_id = (select usage_id
        from user_identifiers
          where object_name = ui.object_name
            and object_type = ui.object_type
            and usage_context_id = 0)
      and object_name = 'your package name'
      and object_type = 'PACKAGE BODY'
      order by name
    

    【讨论】:

    • 这是正确答案!在 12c 上测试正常,但视图 USER_IDENTIFIERS 至少从 11g 开始就存在。
    • 默认情况下这个视图是空的。它由 PL/SCOPE 填充,这需要我们使用特殊设置重新编译我们的代码。 Find out more
    【解决方案4】:

    APC 的答案在正确的行上,但给出的 SQL 将仅列出 'YOU' 拥有的过程,并且与从 USER_PROCEDURES 中选择相同,但其他架构中可能存在包

    SQL> select * from all_procedures where owner='TEST';
    
    OWNER                          OBJECT_NAME
    ------------------------------ ------------------------------
    PROCEDURE_NAME                 AGG PIP IMPLTYPEOWNER
    ------------------------------ --- --- ------------------------------
    IMPLTYPENAME                   PAR INT DET AUTHID
    ------------------------------ --- --- --- ------------
    TEST                           TEST
                                   NO  NO
                                   NO  NO  NO  DEFINER
    
    SQL> select * from user_procedures;
    
    OBJECT_NAME                    PROCEDURE_NAME                 AGG PIP
    ------------------------------ ------------------------------ --- ---
    IMPLTYPEOWNER                  IMPLTYPENAME                   PAR INT DET
     ------------------------------ ------------------------------ --- --- ---
    AUTHID
    ------------
    TEST                                                          NO  NO
                                                              NO  NO  NO
    

    另请注意,当您授予和撤销对包、过程或函数的执行时,这些会显示在 DBA_TAB_PRIVS 表中(与表上的插入/更新/删除权限相同的表)

    一旦您知道了包的名称,例如 Oracle 提供的 DBMS 包,您还可以使用 DESC,它会提供预期的参数和类型列表,例如

    SQL> desc dbms_lob
    PROCEDURE APPEND
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       BLOB                    IN/OUT
     SRC_LOB                        BLOB                    IN
    PROCEDURE APPEND
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       CLOB                    IN/OUT
     SRC_LOB                        CLOB                    IN
    PROCEDURE CLOSE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
    PROCEDURE CLOSE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
    PROCEDURE CLOSE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN/OUT
    FUNCTION COMPARE RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_1                          BLOB                    IN
     LOB_2                          BLOB                    IN
     AMOUNT                         NUMBER(38)              IN     DEFAULT
     OFFSET_1                       NUMBER(38)              IN     DEFAULT
     OFFSET_2                       NUMBER(38)              IN     DEFAULT
    FUNCTION COMPARE RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_1                          CLOB                    IN
     LOB_2                          CLOB                    IN
     AMOUNT                         NUMBER(38)              IN     DEFAULT
     OFFSET_1                       NUMBER(38)              IN     DEFAULT
     OFFSET_2                       NUMBER(38)              IN     DEFAULT
    FUNCTION COMPARE RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_1                         BINARY FILE LOB         IN
     FILE_2                         BINARY FILE LOB         IN
     AMOUNT                         NUMBER(38)              IN
     OFFSET_1                       NUMBER(38)              IN     DEFAULT
     OFFSET_2                       NUMBER(38)              IN     DEFAULT
    PROCEDURE CONVERTTOBLOB
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       BLOB                    IN/OUT
     SRC_CLOB                       CLOB                    IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN/OUT
     SRC_OFFSET                     NUMBER(38)              IN/OUT
     BLOB_CSID                      NUMBER                  IN
     LANG_CONTEXT                   NUMBER(38)              IN/OUT
     WARNING                        NUMBER(38)              OUT
    PROCEDURE CONVERTTOCLOB
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       CLOB                    IN/OUT
     SRC_BLOB                       BLOB                    IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN/OUT
     SRC_OFFSET                     NUMBER(38)              IN/OUT
     BLOB_CSID                      NUMBER                  IN
     LANG_CONTEXT                   NUMBER(38)              IN/OUT
     WARNING                        NUMBER(38)              OUT
    PROCEDURE COPY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       BLOB                    IN/OUT
     SRC_LOB                        BLOB                    IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN     DEFAULT
     SRC_OFFSET                     NUMBER(38)              IN     DEFAULT
    PROCEDURE COPY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       CLOB                    IN/OUT
     SRC_LOB                        CLOB                    IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN     DEFAULT
     SRC_OFFSET                     NUMBER(38)              IN     DEFAULT
    PROCEDURE CREATETEMPORARY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
     CACHE                          BOOLEAN                 IN
     DUR                            BINARY_INTEGER          IN     DEFAULT
    PROCEDURE CREATETEMPORARY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
     CACHE                          BOOLEAN                 IN
     DUR                            BINARY_INTEGER          IN     DEFAULT
    PROCEDURE ERASE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
     AMOUNT                         NUMBER(38)              IN/OUT
     OFFSET                         NUMBER(38)              IN     DEFAULT
    PROCEDURE ERASE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
     AMOUNT                         NUMBER(38)              IN/OUT
     OFFSET                         NUMBER(38)              IN     DEFAULT
    PROCEDURE FILECLOSE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN/OUT
    PROCEDURE FILECLOSEALL
    FUNCTION FILEEXISTS RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
    PROCEDURE FILEGETNAME
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
     DIR_ALIAS                      VARCHAR2                OUT
     FILENAME                       VARCHAR2                OUT
    FUNCTION FILEISOPEN RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
    PROCEDURE FILEOPEN
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN/OUT
     OPEN_MODE                      BINARY_INTEGER          IN     DEFAULT
    PROCEDURE FREETEMPORARY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
    PROCEDURE FREETEMPORARY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
    FUNCTION GETCHUNKSIZE RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
    FUNCTION GETCHUNKSIZE RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
    FUNCTION GETLENGTH RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
    FUNCTION GETLENGTH RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
    FUNCTION GETLENGTH RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
    FUNCTION GET_STORAGE_LIMIT RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
    FUNCTION GET_STORAGE_LIMIT RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
    FUNCTION INSTR RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
     PATTERN                        RAW                     IN
     OFFSET                         NUMBER(38)              IN     DEFAULT
     NTH                            NUMBER(38)              IN     DEFAULT
    FUNCTION INSTR RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
     PATTERN                        VARCHAR2                IN
     OFFSET                         NUMBER(38)              IN     DEFAULT
     NTH                            NUMBER(38)              IN     DEFAULT
    FUNCTION INSTR RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
     PATTERN                        RAW                     IN
     OFFSET                         NUMBER(38)              IN     DEFAULT
     NTH                            NUMBER(38)              IN     DEFAULT
    FUNCTION ISOPEN RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
    FUNCTION ISOPEN RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
    FUNCTION ISOPEN RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
    FUNCTION ISTEMPORARY RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
    FUNCTION ISTEMPORARY RETURNS NUMBER(38)
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
    PROCEDURE LOADBLOBFROMFILE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       BLOB                    IN/OUT
     SRC_BFILE                      BINARY FILE LOB         IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN/OUT
     SRC_OFFSET                     NUMBER(38)              IN/OUT
    PROCEDURE LOADCLOBFROMFILE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       CLOB                    IN/OUT
     SRC_BFILE                      BINARY FILE LOB         IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN/OUT
     SRC_OFFSET                     NUMBER(38)              IN/OUT
     BFILE_CSID                     NUMBER                  IN
     LANG_CONTEXT                   NUMBER(38)              IN/OUT
     WARNING                        NUMBER(38)              OUT
    PROCEDURE LOADFROMFILE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       BLOB                    IN/OUT
     SRC_LOB                        BINARY FILE LOB         IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN     DEFAULT
     SRC_OFFSET                     NUMBER(38)              IN     DEFAULT
    PROCEDURE LOADFROMFILE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     DEST_LOB                       CLOB                    IN/OUT
     SRC_LOB                        BINARY FILE LOB         IN
     AMOUNT                         NUMBER(38)              IN
     DEST_OFFSET                    NUMBER(38)              IN     DEFAULT
     SRC_OFFSET                     NUMBER(38)              IN     DEFAULT
    PROCEDURE OPEN
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
     OPEN_MODE                      BINARY_INTEGER          IN
    PROCEDURE OPEN
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
     OPEN_MODE                      BINARY_INTEGER          IN
    PROCEDURE OPEN
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN/OUT
     OPEN_MODE                      BINARY_INTEGER          IN     DEFAULT
    PROCEDURE READ
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
     AMOUNT                         NUMBER(38)              IN/OUT
     OFFSET                         NUMBER(38)              IN
     BUFFER                         RAW                     OUT
    PROCEDURE READ
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
     AMOUNT                         NUMBER(38)              IN/OUT
     OFFSET                         NUMBER(38)              IN
     BUFFER                         VARCHAR2                OUT
    PROCEDURE READ
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
     AMOUNT                         NUMBER(38)              IN/OUT
     OFFSET                         NUMBER(38)              IN
     BUFFER                         RAW                     OUT
    FUNCTION SUBSTR RETURNS RAW
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN
     AMOUNT                         NUMBER(38)              IN     DEFAULT
     OFFSET                         NUMBER(38)              IN     DEFAULT
    FUNCTION SUBSTR RETURNS VARCHAR2
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN
     AMOUNT                         NUMBER(38)              IN     DEFAULT
     OFFSET                         NUMBER(38)              IN     DEFAULT
    FUNCTION SUBSTR RETURNS RAW
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     FILE_LOC                       BINARY FILE LOB         IN
     AMOUNT                         NUMBER(38)              IN     DEFAULT
     OFFSET                         NUMBER(38)              IN     DEFAULT
    PROCEDURE TRIM
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
     NEWLEN                         NUMBER(38)              IN
    PROCEDURE TRIM
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
     NEWLEN                         NUMBER(38)              IN
    PROCEDURE WRITE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
     AMOUNT                         NUMBER(38)              IN
     OFFSET                         NUMBER(38)              IN
     BUFFER                         RAW                     IN
    PROCEDURE WRITE
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
     AMOUNT                         NUMBER(38)              IN
     OFFSET                         NUMBER(38)              IN
     BUFFER                         VARCHAR2                IN
    PROCEDURE WRITEAPPEND
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        BLOB                    IN/OUT
     AMOUNT                         NUMBER(38)              IN
     BUFFER                         RAW                     IN
    PROCEDURE WRITEAPPEND
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     LOB_LOC                        CLOB                    IN/OUT
     AMOUNT                         NUMBER(38)              IN
     BUFFER                         VARCHAR2                IN
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2010-12-21
      • 2015-11-12
      • 2015-05-15
      • 1970-01-01
      • 2019-04-12
      • 2017-12-23
      • 1970-01-01
      相关资源
      最近更新 更多