[Oracle] SQLでストアドプロシージャのソースを確認する方法 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

最近はストアドプロシージャなどの開発には専らOBJECT BROWSERを使用しているので、SQLでストアドプロシージャのソースを確認する方法などすっかり忘れてしまっていました。

人に聞かれて改めて調べてみたのですが、以下のSQLを叩いてディクショナリを参照するしかないようです。
(SQL*Plusのコマンドがあったような気もしたのですが...それは気のせいだったようです。)

SQLでプロシージャのソースを確認する
select text 
  from {all_source|dba_source|user_source} 
  where name = procedure_name
  order by line;

例えば、以下のように確認します。

SQL> select text from user_source where name = 'TEST_PROC' order by line;

TEXT
----------------------------------------------------------------------------------------------------

PROCEDURE TEST_PROC (
        param1 IN  INTEGER,
        param2 IN  INTEGER,
        param3 OUT INTEGER
) IS
BEGIN
        param3 := param1 + param2;
END;

ちなみに仕様(インターフェース)を確認するだけならSQL*Plusのdescコマンドが使えます。

SQL> desc TEST_PROC
PROCEDURE TEST_PROC
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 PARAM1                         NUMBER(38)              IN
 PARAM2                         NUMBER(38)              IN
 PARAM3                         NUMBER(38)              OUT


これらのSQLやコマンドはストアドプロシージャだけでなく、ファンクション、トリガー、パッケージ(仕様・本体)でも同様に使うことができます。