2022年5月9日月曜日

APEXアプリケーションの過去のコードを取り出す

 APEXのアプリケーションに埋め込んだコードを書き換えて保存した後に、以前のコードに戻したくなることがあります。

これは以下の手順で実施できます。

  1. アプリケーションのエクスポートを行う際に現在から〇〇分前を指定して、過去のアプリケーションを取り出す。
  2. エクスポートしたファイルを別アプリケーションとしてインポートする。
  3. インポートしたアプリケーションの、該当のコードを参照する。

アプリケーション全体のエクスポート/インポートを行う手間を省きたい場合は、以下のような方法で、特定のコンポーネントの過去の設定を取り出すことができます。

Always FreeのAutonomous Databaseでの作業例です。

最初にAPEXのワークスペース・スキーマでFlashback Queryを実行する権限を与えます。APEXのワークスペース・スキーマをAPEXDEVとすると、以下のGRANT文を実行します。

grant flashback any table to apexdev;

データベース・アクションに管理者ユーザーADMINで接続し、上記のコマンドを実行します。


APEXアプリケーションとして、アプリケーションID107ページ番号4のページに、テストという名前プロセスがあるとします。


このコードは、APEXの標準ビューAPEX_APPLICATION_PAGE_PROCの列PROCESS_SOURCEから参照することができます。

select process_source from APEX_APPLICATION_PAGE_PROC
where application_id = 107 and page_id = 4 and process_name = 'テスト'


同じ場所の5分前のコードは、as of timestamp (systimestamp - interval '5' minute)を指定して検索することにより、取り出せます。

select process_source from APEX_APPLICATION_PAGE_PROC
as of timestamp (systimestamp - interval '5' minute)
where application_id = 107 and page_id = 4 and process_name = 'テスト'


ブラウザ上では改行が無視されていますが、これは表示上の問題で、ダウンロードしたファイルには改行も含まれます。

SQLコマンドの結果をダウンロードすると、デフォルトではShift_JISでエンコードされます。これはプリファレンスを開き、Unicode CSVダウンロードONに変更することでUTF-8でダウンロードされるように変更できます。


プリファレンスの画面です。


APEXアプリケーションに埋め込まれたコードが、どのビューから参照できるかについては、ワークスペース・ユーティリティOracle APEXビューから確認できます。


以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。