Enjoy the good lift everyday!
关闭
欢迎来PyGo个人空间 ^_^
DB2存储过程异常处理 | PyGo²

DB2存储过程异常处理

记录下DB2数据库存储过程对异常的处理,DECLARE声明异常的方式。

DB2 存储过程 SQLEXCEPTIOIN DECLARE
语法糖
1
DECLARE [handler-type] HANDLER FOR [condition] [handler-action]

handler-type

异常处理器类型(handler-type)有以下几种:

  • CONTINUE:处理器完成handler-action操作之后,继续执行产生这个异常语句的下一条语句,说白了就是执行一下handler-action。
  • EXIT:处理器完成handler-action操作之后,存储过程终止,并将handler-action操作结果控制返回给调用者。
  • UNDO:处理器操作handler-action执行之前,DB2会回滚存储过程中执行的SQL操作。在处理器操作完成之后,存储过程会终止,并将控制返回给调用者。

condition

异常处理器可以处理基于特定SQLSTATE值的定制异常,或者处理预定义异常的类。预定义的3种异常如下所示:

  • NOT FOUND:标识导致SQLCODE值为+100或者SQLSATE值为02000的异常。这个异常通常在SELECT没有返回行的时候出现。
  • SQLEXCEPTIOIN:标识导致SQLCODE值为负的异常。
  • SQLWARNING:标识导致警告异常或者导致+100以外的SQLCODE正值的异常。

handler-action

handler-action为定义处理异常的sql语句,一般主要用来设定返回值、记录日志等操作。

实例
1
2
3
4
5
6
7
declare exit handler for sqlexception
begin
set i_code=sqlcode;
set i_err_no=1;
call SP_PASSYS_ERRHANDLE(v_proc_name,i_code);
commit;
end;
  • i_code:sqlexception产生的错误代码sqlcode。
  • i_err_no:返回给调用者的返回值。
  • SP_PASSYS_ERRHANDLE:调用日志记录存储过程。
  • 本文作者:mingliang.gao【一个爱老婆Python程序猿。。。。。。】
  • 本文链接: http://pygo2.top/articles/40004/
  • 版权声明: 本博客所有文章欢迎转载,转载请注明出处!
觉得有帮助 请偶坐个公交车
0%