Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Oracleのパッケージ内のプロシージャに関して、呼び出し関係を出力することは可能でしょうか?

3350022Nov 21 2016 — edited Jan 4 2017

オブジェクト間の呼び出し階層については、all_dependenciesテーブルやDEPTREEなどで出力できたのですが、

パッケージの中にあるプロシージャ単位で、呼び出し階層を出力することは可能でしょうか?

複数のパッケージがあり、各々のパッケージの中に、複数プロシージャが定義されているPL/SQLソースに対し、

呼び出し関係を明らかにできればと思っています。

お知恵を頂ければ幸いです。

なお、オブジェクト間の呼び出し階層を出力するSQLは下記の通りです。

(一時テーブルに結果を格納後、テキスト出力しています)

set serveroutput on size 1000000
set echo off
set heading off
set newpage none
set trimspool on
set trimout on
set pagesize 0
set linesize 32767
set long 2000000000
set longchunksize 30000
set feedback off
set timing off
set verify off

DECLARE
  MAX_DEPTH CONSTANT PLS_INTEGER := 7;        -- ← ツリーの深さを設定
  top_obj VARCHAR2(30) DEFAULT 'パッケージ名'; -- ← オブジェクトを設定
  depth PLS_INTEGER DEFAULT  1;
  no PLS_INTEGER DEFAULT  1;

  PROCEDURE show_dep(curr_depth IN PLS_INTEGER, curr_obj IN VARCHAR2)
  IS
    CURSOR csr IS
      SELECT DISTINCT referenced_name
        FROM all_dependencies
       WHERE NAME = curr_obj
         AND referenced_name != curr_obj
         AND referenced_name NOT IN ('STANDARD',
                                     'DBMS_SYS_SQL',
                                     'DBMS_SQL',
                                     'SYS');
  BEGIN
    IF curr_depth <= MAX_DEPTH THEN
      FOR rec IN csr LOOP
        insert into test_proc_reference values (no, RPAD('>', curr_depth * 4, '  ') ||rec.referenced_name);
        no := no + 1;
        show_dep(curr_depth + 1, rec.referenced_name);
      END LOOP;
    END IF;
  END;

BEGIN
  show_dep(depth, UPPER(top_obj));
  commit;
END;
/

spool X.txt

select REFERENCED_NAME from test_proc_reference order by no;

spool off

メッセージ編集者: 3350022 プロシージャの呼び出し階層を一覧出力するのは難しそうですね。

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 19 2016
Added on Nov 21 2016
0 comments
1,523 views