谁能看到为什么我在下面得到“没有获取操作的当前记录”?
通过捕获而不是重新抛出下面的唯一键违规异常,我成功地跳过了重复记录。然而还有另一个错误。
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 where not exists 语句。然而,我更喜欢做一个最小的修复;假期已经到了。