色彩时光 | 记录程序员世界的点点滴滴

mysql存储过程SQLSTATE 02000的异常情况处理


mysql存储过程调用游标循环过程中,使用SQLSTATE 02000的异常情况来设置标识位来退出循环处理。代码跑了一段时间后,发现循环并没跑完就退出。查询SQLSTATE 02000的异常情况发现,发生下述异常之一:
SELECT INTO 语句或 INSERT 语句的子查询的结果为空表。
在搜索的 UPDATE 或 DELETE 语句内标识的行数为零。
在 FETCH 语句中引用的游标位置处于结果表最后一行之后。
由于循环体中出现了SELECT INTO 语句或 INSERT 语句的子查询的结果为空表的情况,所以02000的异常标识无法满足。

后查询异常标识02501 游标位置对于当前行的 FETCH 无效。尝试用该标识位,但是并未捕获到改异常。

后最终找到解决问题得办法:每次循环的末尾增加这段代码:set 标识位 = 0;然后循环就能走完了。


您可能也对下面文章感兴趣:

Write a Comment


* Content (required) 10~500s

分类

热门标签

友情链接