DB2存储过程报错回滚示例

来源:互联网 发布:新疆旅游大数据 编辑:程序博客网 时间:2024/05/16 08:36

需要注意的问题:

1.DB2存储过程会在SQL执行完成后,将返回信息赋值给SQLCODE和SQLSTATE。这两个DB2内置变量在使用前需要定义。

2.定义UNDO类型的异常处理,在定义后面可以跟上操作语句。

3.UNDO类型的异常处理,必须是处理原子操作的SQL块,DB2默认不是原子操作的。在BEGIN跟上ATOMIC即可。


CREATE OR REPLACE PROCEDURE TEST (    IN num INTEGER,    OUT P_ERRORCODE VARCHAR(256), --SQL返回码    OUT P_ERRORDESC VARCHAR(1024)) -- SQL返回信息BEGIN ATOMIC  DECLARE SQLCODE INTEGER DEFAULT 0;  DECLARE SQLSTATE CHAR(5) DEFAULT '00000';  -- 定义一个UNDO类型的异常处理  DECLARE UNDO HANDLER FOR SQLEXCEPTION set P_ERRORCODE = to_char(sqlcode), P_ERRORDESC = '处理失败';    update userinfo t set t.usercode = '000000000003' where t.usercode='000000000002';  update userinfo t set t.usercode = '00000000000100' where t.usercode='000000000001'; --这里会因usercode字段超长出现异常    set P_ERRORCODE = to_char(abs(SQLCODE));  set P_ERRORDESC = '处理成功';  END;


0 0