SQL异常处理

----------------------------------异常处理-----------------------------------------
--异常处理,也叫作错误处理,通常是把异常记录在日志中
----在存储过程中加上异常处理后,让异常原因记录在日志表中。

--注意:异常处理有自己的BEGIN..END..,意思就是异常处理的BEGIN..END..和存储过程的BEGIN..END..不共用。
--语法:

复制代码
BEGIN
  ----
  ---执行的语句
EXCEPTION --一旦出现异常
  
   WHEN DUP_VAL_ON_INDEX THEN 
     ROLLBACK; --回滚:指的是撤销刚刚执行的语句。
     sp_log(p_sp_name,p_step,'异常:'||SQLCODE||sqlerrm);  --SQLCODE:异常码  sqlerrm:具体的异常
     
     WHEN OTHERS THEN 
     ROLLBACK;  
       sp_log(p_sp_name,p_step,'异常:'||SQLCODE||sqlerrm);
END;
复制代码

例子:

复制代码
--例:给SP_STORE中加入异常处理
CREATE OR REPLACE PROCEDURE SP_STORE AS
BEGIN
  SP_LOG('SP_STORE',1,'程序开始');
--
DELETE FROM DW_STORE;
  SP_LOG('SP_STORE',2,'删除数据完成');
--
--EXECUTE IMMEDIATE 'TRUNCATE TABLE DW_STORE';
--将最新的数据更新到表中。
BEGIN
(插入数据)
      SP_LOG('SP_STORE',3,'插入数据完成');
   
EXCEPTION --一旦出现异常
  
   WHEN DUP_VAL_ON_INDEX THEN 
     ROLLBACK; --回滚:指的是撤销刚刚执行的语句。
     --然后运行日志存储过程
     sp_log('SP_STORE',3,'异常:'||SQLCODE||sqlerrm);  --SQLCODE:异常码  sqlerrm:具体的异常
     
     WHEN OTHERS THEN 
     ROLLBACK;  
       sp_log('SP_STORE',3,'异常:'||SQLCODE||sqlerrm);
END;   
复制代码

 

posted @   潜摩羯  阅读(340)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示