1、这三行说的是同一个错误,只是一行比一行说的详细 这三行的内容: 在触发器的中触发错误,在触发器第四行触发错误,在第四行触发的具体错误 2、 按下面的方法写试试 BEGIN delete from hr.employees where EMPLOYEE_ID='198' ; exception when others then if SQLCODE='-20001' then DBMS_OUTPUT.PUT_LINE(SQLCODE || '-->'|| SQLERRM ); end if; end; 感觉三行还是会全都出来,因为这3行是一体的 SQLERRM的内容应该是这三行 ORA-20001: 不是上班时间,不能修改departments表 ORA-06512: 在 "XX.TRG_DEPT_TIME", line 4 ORA-04088: 執行觸發程式 'XX.TRG_DEPT_TIME' 時發生錯誤
您好: 謝謝,的確還是會出來3行這樣若在前端的程式,會有影響嗎?另外,第2個問題,您是說,先用 WEHN OTHER 來抓全部EXPTION 再用 if SQLCODE='-20001' then 等 ,一個一個來抓嗎?謝謝!
输出的时候可以利用换行符截取SQLERRM,只输出SQLERRM第一行的内容 试试下面的语句 DBMS_OUTPUT.PUT_LINE(SQLCODE || '-->'||substr(SQLERRM,1,instr(SQLERRM,chr(10))-1);第2個問題,只能是用 WHEN OTHER 來抓全部EXPTION 再用 if SQLCODE='-20001' then 等分别处理了 oracle只接受内部预定义的异常,直接写-20001,oracle是不能识别的
这三行的内容:
在触发器的中触发错误,在触发器第四行触发错误,在第四行触发的具体错误
2、 按下面的方法写试试
BEGIN
delete from hr.employees where EMPLOYEE_ID='198' ;
exception
when others then
if SQLCODE='-20001' then
DBMS_OUTPUT.PUT_LINE(SQLCODE || '-->'|| SQLERRM );
end if;
end;
感觉三行还是会全都出来,因为这3行是一体的
SQLERRM的内容应该是这三行
ORA-20001: 不是上班时间,不能修改departments表
ORA-06512: 在 "XX.TRG_DEPT_TIME", line 4
ORA-04088: 執行觸發程式 'XX.TRG_DEPT_TIME' 時發生錯誤
謝謝,的確還是會出來3行這樣若在前端的程式,會有影響嗎?另外,第2個問題,您是說,先用 WEHN OTHER 來抓全部EXPTION
再用 if SQLCODE='-20001' then 等 ,一個一個來抓嗎?謝謝!
试试下面的语句
DBMS_OUTPUT.PUT_LINE(SQLCODE || '-->'||substr(SQLERRM,1,instr(SQLERRM,chr(10))-1);第2個問題,只能是用 WHEN OTHER 來抓全部EXPTION
再用 if SQLCODE='-20001' then 等分别处理了
oracle只接受内部预定义的异常,直接写-20001,oracle是不能识别的