以下の手順で呼び出します。
アプリケーション・ビルダーより、データベース・オブジェクトの依存性を確認する対象のアプリケーションを開きます。
ユーティリティを開きます。
データベース・オブジェクトの依存性を開きます。
依存性のスキャンが未実施のときは、アプリケーションのスキャンを実行するように促されます。アプリケーションのスキャンとは、APEX_APP_OBJECT_DEPENDENCY.SCANの実行です。
スキャン・タイプと有効範囲を設定し、スキャンを実行します。
スキャン・タイプの選択はFull ScanかErrors onlyのどちらかです。APEX_APP_OBJECT_DEPENDENCY.SCANの引数p_optionsにあたる設定です。
Full Scanがc_option_all、Errors onlyがc_option_errorsになるようです。c_option_dependenciesおよびc_option_identifiersの切り替えが意味を持つのは、PL/Scopeとしてidentifiers:allを設定し、データベース・オブジェクトの再コンパイルを行った場合に限られます。
有効範囲を設定することで、特定のページのみをスキャンの対象にできます。
スキャンが完了すると、そのアプリケーションが依存しているデータベース・オブジェクトと、そのデータベース・オブジェクトを参照しているアプリケーション内の位置が表示されます。
左ペインのツリーには概ねビューAPEX_USED_DB_OBJECTSの内容が表示されています。左ペインでオブジェクトを選択すると、選択したデータベース・オブジェクトでビューAPEX_USED_DB_OBJ_DEPENDENCIESを絞り込んだ内容が一覧されます。
依存性のクリアをクリックすると、APEX_APP_OBJECT_DEPENDENCY.CLEAR_CACHEが呼び出されます。
コンポーネントのプロパティはリンクになっています。
クリックすると、アプリケーション・ビルダーの該当ページが開きます。
APEX 24.2では、依存性を検出するカバレッジが広がりました。パッケージTESTを作成し、引数として与えられた文字列をそのまま返すファンクションECHOを作成します。
create or replace package test as
function echo(p in varchar2)
return varchar2;
end;
/
create or replace package body test as
function echo(p in varchar2)
return varchar2
as
begin
return p;
end echo;
end test;
/
このTEST.ECHOを、追加された検出対象に含めます。
レポート列のSQL式が対象になります。
RESTソースのデータ・プロファイルの列タイプのSQL式が対象になります。
RESTソースのローカル後処理のタイプのSQL問合せが対象になります。
ユーティリティからデータベース・オブジェクトの依存性を開きます。
依存しているオブジェクトとして検出されたパッケージTESTを選択すると、上記の3箇所がコンポーネントのプロパティにリンクとして表示されます。
パッケージAPEX_APP_OBJECT_DEPENDENCYについては、以前の記事「APEX_APP_OBJECT_DEPENDENCYを使ってAPEXアプリケーションが参照しているデータベース・オブジェクトを確認する」で紹介しています。この記事で作成したアプリケーションをAPEX 24.2向けに修正しました。
https://github.com/ujnak/apexapps/blob/master/exports/application-object-dependency-scanner-242.zip
APEXの標準としてデータベース・オブジェクトの依存性を確認するページが追加されましたが、上記のAPEXアプリケーションは、APIの呼び出しやPL/Scopeの設定が含まれているので、まだ参考になる部分はあります。
なぜかAPEX 24.2では、ビューAPEX_USED_DB_OBJECT_COMP_PROPSより列COMPONENT_IDが除かれています。
この列が無くなって困ることは無いと思いますが、このビューをソースとしているレポートでエラーは発生する可能性はあります。その場合は、レポートの列を同期化することで対応できます。
この列が無くなって困ることは無いと思いますが、このビューをソースとしているレポートでエラーは発生する可能性はあります。その場合は、レポートの列を同期化することで対応できます。
今回の記事は以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完