組み込みの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