在DB2中什么情况出现NOT FOUND异常
(2013-07-26 22:02:34)
标签:
db2notfound情况事件过程 |
分类: 数据库类 |
场景:有个存储过程DELETE_CTW()
CREATE OR REPLACE
BEGIN
DECLARE i INT DEFAULT 0;
declare n int ;
declare row_id
declare key varchar(40);
DECLARE notFound INT DEFAULT 0;
DECLARE cur CURSOR WITH HOLD FOR SELECT rowid,acct_no
FROM
DECLARE CONTINUE HANDLER FOR NOT FOUND SET notFound = 1;
OPEN cur;
FETCH cur INTO row_id,key;WHILE notFound=0 DO
SET i=i+1;
set n=(select count(*) from tmp.a_inmb where acct_no=key);
if n=1 then
delete from C_INMB where rowid=row_id;
end if;
SET notFound=0;
FETCH cur INTO row_id,key;
END WHILE;
CLOSE cur;
END
在这个存储过程中我们定义了一个HANDLER FOR是出现NOT FOUND异常就重新设置变量notFound=1,这时当初认为存储过程后面又设置SET notFound=0是多余的(declare默认这个变量为0),这时查询存储过程相关的资料发现有个sample:
declare not_found condition for sqlstate '02000';
declare continue
从上得出它定义一个SQLSTATE '02000'的错误信号为not_found事件,并出现此事件设置变量at_end=1,这时得出SQLSTATE‘02000’的错误就是Not found异常,通过查找DB2的消息参考书发现sqlstate 02000的错误SQLCODE是0100,然后使用命令查找此错误SQLCODE信息,错误如下:
SQL0100W
说明:
下列其中一个条件为真:
*
*
*
*
通过错误信息得出:

加载中…