4

谁能看到为什么我在下面得到“没有获取操作的当前记录”?

通过捕获而不是重新抛出下面的唯一键违规异常,我成功地跳过了重复记录。然而还有另一个错误。

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 语句。然而,我更喜欢做一个最小的修复;假期已经到了。

4

0 回答 0