APEXのアプリケーションに埋め込んだコードを書き換えて保存した後に、以前のコードに戻したくなることがあります。
これは以下の手順で実施できます。
- アプリケーションのエクスポートを行う際に現在から〇〇分前を指定して、過去のアプリケーションを取り出す。
- エクスポートしたファイルを別アプリケーションとしてインポートする。
- インポートしたアプリケーションの、該当のコードを参照する。
アプリケーション全体のエクスポート/インポートを行う手間を省きたい場合は、以下のような方法で、特定のコンポーネントの過去の設定を取り出すことができます。
Always FreeのAutonomous Databaseでの作業例です。
最初にAPEXのワークスペース・スキーマでFlashback Queryを実行する権限を与えます。APEXのワークスペース・スキーマをAPEXDEVとすると、以下のGRANT文を実行します。
grant flashback any table to apexdev;
APEXアプリケーションとして、アプリケーションIDが107、ページ番号が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でダウンロードされるように変更できます。