特定の関数を呼び出しているコードを確認するために、DB内のすべてのPL/SQL関数/プロシージャをテキスト検索したい。そのためのSQL Developerのツール、または関数コードを格納するシステムスキーマの下のメタテーブルはありますか?スキーマのテキストダンプも役立ちます。
以下が当てはまる場合:
1)関数がパッケージに含まれていない
2)関数呼び出しは動的SQLではありません
次に、その依存関係がdba_dependenciesから何であるかを簡単に確認できます。
SELECT *
FROM dba_dependencies
WHERE referenced_owner = 'MYOWNER' AND referenced_name = 'MYOBJECT';
それ以外の場合は、dba_sourceを確認できます。
SELECT *
FROM dba_source
WHERE upper(text) like '%MYOWNER.MYOBJECT%';
スキーマのすべてのオブジェクトのソースを表示するには:
SELECT *
FROM dba_source
WHERE owner = 'MYOWNER'
ORDER BY type, name, line;
他の回答では、SQLが関数を呼び出したビューは見つかりませんでした。ビューのデータはdba_views
にありますが、SQLは不便なLONG
データ型です。ビューから検索するには、次のような一時テーブルを作成する必要がありました。
create table temp_dba_views
(owner varchar2(128), view_name varchar2(128), text clob);
insert into temp_dba_views
(select owner, view_name, to_lob(text) from dba_views);
select * from temp_dba_views where upper(text) like '%MYFUNCTION%';
dba_mviews
にあるマテリアライズドビューについても同様です。主な違いは、text
列がquery
という名前になっていることです。