ora-24381

论坛 期权论坛 脚本     
匿名技术用户   2020-12-29 22:27   19   0

该异常只是在使用forall的时候、并且使用SAVE EXCEPTIONS保存异常信息时:若其中异常为DML异常才会爆出

如下例子:

例一这种情况不会爆出该异常

declare

TYPE num_t ISTABLEOFNUMBER;

num num_t:=num_t(1,2,3);

i NUMBER;

BEGIN

i:='a';

FORALL i IN num.first..num.last --SAVE EXCEPTIONS

--UPDATE demo_t t SET t.sale=t.sale/0 WHERE t.id=num(i);

UPDATE demo_t t SET t.name= t.name||'123456789123456'WHERE t.id=num(i);

EXCEPTION

WHENOTHERSTHEN

DBMS_OUTPUT.put_line (SQLERRM (SQLCODE));

end;

输出结果:ORA-06502: PL/SQL: 数字或值错误 : 字符到数值的转换错误

例二 若有 save exception 并且为DML异常都会爆出:

declare

TYPE num_t ISTABLEOFNUMBER;

num num_t:=num_t(1,2,3);

i NUMBER;

BEGIN

-- i:='a';

FORALL i IN num.first..num.last SAVEEXCEPTIONS

--UPDATE demo_t t SET t.sale=t.sale/0 WHERE t.id=num(i);

UPDATE demo_t t SET t.name= t.name||'123456789123456'WHERE t.id=num(i);

EXCEPTION

WHENOTHERSTHEN

DBMS_OUTPUT.put_line (SQLERRM (SQLCODE));

end;

输出结果:ORA-24381: 数组 DML 出错

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP