組み込みのPL/SQLプロシージャ(ファンクション)の引数を確認する

PL/SQLの組み込み、もしくは自作プロシージャおよびファンクションの引数がどうなっているのか確認するのに最も早いのは、ドキュメントを確認することです。しかし、何かしらの理由でドキュメントを確認できない(ローカルにドキュメントがなく、ネットワークに接続することが出来ない等)場合やそもそもいちいちドキュメントを見に行かずにsqlplusで手っ取り早く確認したい(私はこのパターンです。脳内コンテキストスイッチが発生するのが非常に嫌だ。)場合があると思います。 意外と検索しても情報が出てこないので、やり方を記載します。

PL/SQLプロシージャ(ファンクション)の引数の確認方法

  • [DBA|ALL|USER]_ARGUMENTSビューを参照します。
  • [DBA|ALL|USER]_ARGUMENTSの定義は以下の通り
SYS@ORCL > desc all_arguments
 名前                                                NULL?    型
 ----------------------------------------------------- -------- ------------------------------------
 OWNER                                                 NOT NULL VARCHAR2(128)
 OBJECT_NAME                                                    VARCHAR2(128)
 PACKAGE_NAME                                                   VARCHAR2(128)
 OBJECT_ID                                             NOT NULL NUMBER
 OVERLOAD                                                       VARCHAR2(40)
 SUBPROGRAM_ID                                                  NUMBER
 ARGUMENT_NAME                                                  VARCHAR2(128)
 POSITION                                              NOT NULL NUMBER
 SEQUENCE                                              NOT NULL NUMBER
 DATA_LEVEL                                            NOT NULL NUMBER
 DATA_TYPE                                                      VARCHAR2(30)
 DEFAULTED                                                      VARCHAR2(1)
 DEFAULT_VALUE                                                  LONG
 DEFAULT_LENGTH                                                 NUMBER
 IN_OUT                                                         VARCHAR2(9)
 DATA_LENGTH                                                    NUMBER
 DATA_PRECISION                                                 NUMBER
 DATA_SCALE                                                     NUMBER
 RADIX                                                          NUMBER
 CHARACTER_SET_NAME                                             VARCHAR2(44)
 TYPE_OWNER                                                     VARCHAR2(128)
 TYPE_NAME                                                      VARCHAR2(128)
 TYPE_SUBNAME                                                   VARCHAR2(128)
 TYPE_LINK                                                      VARCHAR2(128)
 PLS_TYPE                                                       VARCHAR2(128)
 CHAR_LENGTH                                                    NUMBER
 CHAR_USED                                                      VARCHAR2(1)
 ORIGIN_CON_ID                                                  NUMBER
  • 例えばDBMS_SQLTUNEパッケージのCREATE_TUNING_TASKプロシージャの引数を確認したいケースでは以下のようにします。
set linesize 1000
set pagesize 1000
col object_name for a20
col overload for a2
col argument_name for a20
col default_value for a20

select object_name
     , overload
     , argument_name
     , position
     , data_type
     , defaulted
     , default_value
     , in_out
from   all_arguments
where package_name = 'DBMS_SQLTUNE'
and   object_name = 'CREATE_TUNING_TASK'
order by overload, position;
OBJECT_NAME          OV ARGUMENT_NAME          POSITION DATA_TYPE                      D DEFAULT_VALUE        IN_OUT
-------------------- -- -------------------- ---------- ------------------------------ - -------------------- ---------
CREATE_TUNING_TASK   1                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   1  SQL_TEXT                      1 CLOB                           N                      IN
CREATE_TUNING_TASK   1                                1 OPAQUE/XMLTYPE                 Y                      IN
CREATE_TUNING_TASK   1  BIND_LIST                     2 VARRAY                         Y                      IN
CREATE_TUNING_TASK   1  USER_NAME                     3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  SCOPE                         4 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  TIME_LIMIT                    5 NUMBER                         Y                      IN
CREATE_TUNING_TASK   1  TASK_NAME                     6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  DESCRIPTION                   7 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   1  CON_NAME                      8 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   2  SQL_ID                        1 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   2  PLAN_HASH_VALUE               2 NUMBER                         Y                      IN
CREATE_TUNING_TASK   2  SCOPE                         3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2  TIME_LIMIT                    4 NUMBER                         Y                      IN
CREATE_TUNING_TASK   2  TASK_NAME                     5 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2  DESCRIPTION                   6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   2  CON_NAME                      7 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   3  BEGIN_SNAP                    1 NUMBER                         N                      IN
CREATE_TUNING_TASK   3  END_SNAP                      2 NUMBER                         N                      IN
CREATE_TUNING_TASK   3  SQL_ID                        3 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   3  PLAN_HASH_VALUE               4 NUMBER                         Y                      IN
CREATE_TUNING_TASK   3  SCOPE                         5 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3  TIME_LIMIT                    6 NUMBER                         Y                      IN
CREATE_TUNING_TASK   3  TASK_NAME                     7 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3  DESCRIPTION                   8 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   3  CON_NAME                      9 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   4  SQLSET_NAME                   1 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   4  BASIC_FILTER                  2 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  OBJECT_FILTER                 3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RANK1                         4 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RANK2                         5 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RANK3                         6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  RESULT_PERCENTAGE             7 NUMBER                         Y                      IN
CREATE_TUNING_TASK   4  RESULT_LIMIT                  8 NUMBER                         Y                      IN
CREATE_TUNING_TASK   4  SCOPE                         9 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  TIME_LIMIT                   10 NUMBER                         Y                      IN
CREATE_TUNING_TASK   4  TASK_NAME                    11 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  DESCRIPTION                  12 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  PLAN_FILTER                  13 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   4  SQLSET_OWNER                 14 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5                                0 VARCHAR2                       N                      OUT
CREATE_TUNING_TASK   5  SPA_TASK_NAME                 1 VARCHAR2                       N                      IN
CREATE_TUNING_TASK   5  SPA_TASK_OWNER                2 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  SPA_COMPARE_EXEC              3 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  BASIC_FILTER                  4 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  TIME_LIMIT                    5 NUMBER                         Y                      IN
CREATE_TUNING_TASK   5  TASK_NAME                     6 VARCHAR2                       Y                      IN
CREATE_TUNING_TASK   5  DESCRIPTION                   7 VARCHAR2                       Y                      IN