所以我有一个 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 异常。我想我可以给甲骨文写一封信,但我很好奇其他人是如何处理这个问题的。
我也可以将它包装在一个函数中,但我正在寻找更清洁/更简单的东西。