ORACLE 存储过程异常捕获并抛出
生活随笔
收集整理的這篇文章主要介紹了
ORACLE 存储过程异常捕获并抛出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
for tab_name in tables loop execute immediate 'drop table '||tab_name; --此處可能會報錯
end loop;
當前情況是,循環表,進行刪除,如果出現表不存在,則會異常中斷,導致整個存儲過程掛掉,需求是要能跳過錯誤的執行,不進行處理,進行下個循環。
最終代碼:
for tab_name in tables loop begin execute immediate 'drop table '||tab_name; --此處可能會報錯 EXCEPTION WHEN others THEN NULL; end; end loop;
如何拋出
上面存儲過程是,異常處理寫法是(異常跳過不處理): EXCEPTION WHEN OTHERS THEN END 這種寫法當存儲過程拋出異常時,我們不知道其到底拋出了哪種異常(比如列寬度不夠大而在插入數據時拋異常),可以按如下方式顯示異常信息 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(‘sqlcode : ’ ||sqlcode); DBMS_OUTPUT.put_line(‘sqlerrm : ’ ||sqlerrm); END sqlcode是異常編號,sqlerrm是異常的詳細信息,如果異常信息太多,可以截取一段顯示,如 DBMS_OUTPUT.put_line(‘sqlerrm : ’ ||substr(sqlerrm,1,100));是截取前100個字符顯示出來。 也可以插入到日志表 insert xxx values (sqlcode,sqlerrm)
總結
以上是生活随笔為你收集整理的ORACLE 存储过程异常捕获并抛出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天涯明月刀开发_《天涯明月刀OL腾讯旗下
- 下一篇: 迁移学习: 利用VGG16进行猫狗大战