したがって、ID のリストを処理する for ループがあり、かなり複雑な処理が行われます。すべての醜い詳細に立ち入ることなく、基本的にこれは次のとおりです。
宣言する
l_selected APEX_APPLICATION_GLOBAL.VC_ARR2;
...をちょきちょきと切る...
始める
-- リスト ID を取得します
l_selected := APEX_UTIL.STRING_TO_TABLE(:P4_SELECT_LIST);
-- 適切なループでそれぞれを処理します
FOR i IN 1..l_selected.count
ループ
-- いくつかのデータ チェックを行います...
-- ここでは重複するエントリを探すので、重複が見つかった場合はヌープできます
始める
org_county_accountable から v_dup_check に county_id を選択
WHERE organization_id = :P4_ID AND county_id = v_county_id;
- 次;!いいえ;! でも次はない!
NO_DATA_FOUND THEN の場合の例外
dbms_output.put_line('dup が見つかりません、続行します');
終わり;
-- ここには、まだ重複がない場合にのみ実行したいコードがあります。
IF v_dup_check IS NULL THEN
-- 重複レコードでない場合は続行...
そうしないと
-- 重複チェック変数をリセットします
v_dup_check := NULL;
終わり;
エンドループ;
終わり;
私が通常これを処理する方法は、値を選択し、次のコードを IF ステートメント チェックでラップして、重複チェック変数が NULL であることを確認することです。しかし、それは迷惑です。NEXT と言えるようになりたいだけです。またはNOOP; か何か。特に、すでに NO_DATA_FOUND 例外をキャッチする必要があるためです。私はオラクルに手紙を書くことができると思いますが、他の人がこれをどのように扱っているのか興味があります.
これを関数にラップすることもできますが、もう少しクリーンでシンプルなものを探していました。