任何人都可以看到我为什么会在下面获得“当前获取操作的当前记录”?
我通过捕获而不是重新抛出下面的唯一密钥违例例外来成功地跳过重复记录。但是还有另一个错误。
FOR SELECT
...
FROM
P_SELECT_CLAIM_FILE cf
ORDER BY
cf.DATESBM, cf.TIMESBM, cf.TRANSCDE
INTO
...variables
DO BEGIN
INSERT INTO
CLAIM_TABLE (...)
VALUES (...variables);
WHEN GDSCODE unique_key_violation DO
TX_ID=0;
WHEN GDSCODE no_cur_rec DO
/* Why does this happen?
-508 335544348 no_cur_rec No current record for fetch operation
*/
EXCEPTION E 'no_cur_rec ' || TX_ID;
END
程序P_SELECT_CLAIM_FILE包含另一个带有大量修剪的FOR SELECT INTO,最后是一个SUSPEND命令。这将从固定宽度的文本文件中读取。
我很想把它改成单个INSERT SELECT,其中not exists语句。不过,我宁愿做一个最小的修复;假期已经在这里。