![]() 前へ |
![]() 次へ |
PL/SQLマッピングの場合のみ、複数のマッピングをまとめてコミットまたはロールバックできます。Sqlplusアクティビティ、メイン・プロシージャおよびPL/SQLスクリプトの記述方法に関する知識に基づいて、プロセス・フローを使用すると、すべてのマッピングが正常に完了した後、またはマッピングに失敗した場合のデータのロールバック後にデータをコミットするロジックを自動化できます。
プロセス・フローを使用して複数のマッピングをコミットする手順は、次のとおりです。
PL/SQLマッピングを設計します。
ここで説明する手順は、SQL*LoaderマッピングおよびABAPマッピングには該当しません。
各マッピングが同じスキーマに配布されていることを確認します。
すべてのマッピングで、ロケーションが同じスキーマを指し示している必要があります。そのためには、同じターゲット・モジュールでマッピングを設計します。ターゲット・モジュールが複数の場合は、そのロケーションが同じスキーマを指し示していることを確認します。
「コミット制御」プロパティを「手動」に設定した状態で、各マッピングを構成します。
プロジェクト・ナビゲータでマッピングを右クリックして「構成」を選択します。「コード生成オプション」の「コミット制御」プロパティを「手動」に設定します。
複数のマッピング・アクティビティではなく、1つのSqlplusアクティビティを使用してプロセス・フローを設計します。
典型的なプロセス・フローでは、マッピングごとにマッピング・アクティビティを追加し、プロセス・フローで各マッピング・アクティビティ後に暗黙的なコミットを実行します。ただし、この設計では、マッピング・アクティビティを追加しないでください。かわりに、1つのSqlplusアクティビティを追加してください。
メイン・プロシージャを使用するPL/SQLスクリプトを作成して、各マッピングを実行します。次のスクリプトは、最初のマッピングが成功した場合のみ次のマッピングを実行する方法を示しています。
declare
status VARCHAR2(30);
begin
map1.main(status);
if status != 'OK' then
rollback;
else
map2.main(status);
if status != 'OK' then
rollback;
else
commit;
end if;
end if;
end;
PL/SQLスクリプトをSqlplusアクティビティに貼り付けます。
エディタ・エクスプローラで、Sqlplusアクティビティの下のSCRIPTを選択し、オブジェクト・インスペクタの「値」 をダブルクリックします。
オプションで、「スケジュールの定義」の説明に従って、スケジュールをプロセス・フローに適用します。
マッピング、プロセス・フローおよびスケジュール(定義した場合)を配布します。