【问题标题】:Oracle FORALL Update ExceptionOracle FORALL 更新异常
【发布时间】:2016-08-24 22:19:38
【问题描述】:

我正在使用 FORALL 语句来更新表中的大量寄存器,我需要做的是在更新“失败”时捕获异常,因为部门号 XXX 不存在。

FORALL x IN TABLE_DEPTO_DESCRIPTION.First .. TABLE_DEPTO_DESCRIPTION.Last SAVE EXCEPTIONS
    UPDATE DEPARTMENTS SET
      DESCRIPTION = TABLE_DEPTO_DESCRIPTION(x).DESCRIPTION
    WHERE DPTO_NUMBER =TABLE_DEPTO_DESCRIPTION(x).id;

【问题讨论】:

    标签: oracle plsql forall


    【解决方案1】:

    不更新任何行的更新语句不是错误,因此不会捕获异常。您可以在 FORALL 之后检查 sql%bulk_rowcount 集合,以识别修改了 0 行数据的更新

    FORALL ...
    
    FOR i IN 1 .. SQL%BULK_ROWCOUNT.count
    LOOP
      IF( sql%bulk_rowcount(i) = 0 )
      THEN
        -- TABLE_DEPTO_DESCRIPTION(i).id updated 0 rows.
        -- Do something as a result
      END IF;
    END LOOP;
    

    【讨论】:

      猜你喜欢
      • 2022-11-12
      • 2021-11-25
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多