したがって、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 例外をキャッチする必要があるためです。私はオラクルに手紙を書くことができると思いますが、他の人がこれをどのように扱っているのか興味があります.
これを関数にラップすることもできますが、もう少しクリーンでシンプルなものを探していました。