所以我有一个 for 循环来处理一个 ID 列表并且有一些相当复杂的事情要做。不涉及所有丑陋的细节,基本上是这样的:
宣布 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 环形 - 做一些数据检查的东西...... -- 在这里我们将寻找重复的条目,所以如果发现重复我们可以 noop 开始 从 org_county_accountable 中选择county_id 到v_dup_check 其中organization_id = :P4_ID AND County_id = v_county_id; - 下一个;!不;!但没有下一个! 当 NO_DATA_FOUND THEN 时出现异常 dbms_output.put_line('没有找到副本,继续'); 结尾; -- 这里有我们只想在没有欺骗的情况下执行的代码 如果 v_dup_check 为空 那么 -- 如果不是重复记录,请继续... 别的 -- 重置重复检查变量 v_dup_check := NULL; 结尾; 结束循环; 结尾;
我通常如何处理这个问题是通过选择一个值,然后将以下代码包装在 IF 语句中检查以确保重复检查变量为 NULL。但这很烦人。我只想说NEXT;或 NOOP;或者其他的东西。特别是因为我已经必须捕获 NO_DATA_FOUND 异常。我想我可以给甲骨文写一封信,但我很好奇其他人是如何处理这个问题的。
我也可以将它包装在一个函数中,但我正在寻找更清洁/更简单的东西。