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;
浙公网安备 33010602011771号