这个也有办法,你在CURSOR的时候,其实就是一个循环每一次循环都要有条件的,例如
OPEN cursor_name;
FETCH cursor_name INTO i_1,i_2……;
WHILE s <> 1 AND aaa = 1 DO
……
FETCH cursor_name INTO i_1,i_2……;
-- 如果想跳出循环,在这里给aaa设定一个不等于的值,例如 aaa=2。
END WHILE;
CLOSE cursor_name ;
只要给循环里的条件,设置一个可以跳出循环的值即可。
谢谢你!没上面复杂,因为我是在一个循环中调用类似下面的代码,我只需要在当前的存储过程中检查cur1是否存在,若存在就关闭。
需要需要实现下面中文描述对应的代码就可以,多谢你!
SELECT * FROM mysql.proc t WHERE t.db = SCHEMA() AND UPPER(t.body) LIKE '%cur1%' ;
DECLARE cur1 CURSOR FOR SELECT * FROM test;
open cur1 ;
if cur1 存在 then
关闭
end if
你这个是查询存储过程中是否有定义Cursor的,我的意思是在同一个存储过程中,先检查某一个cursor是否有被定义或使用,若使用某一cursor在使用,先关闭它。
我在一个循环中定义cursor的,所以先要实现下面代码中中文那一行描述的功能,请问怎样写?多谢!
SELECT * FROM mysql.proc t WHERE t.db = SCHEMA() AND UPPER(t.body) LIKE '%cur1%' ;
DECLARE cur1 CURSOR FOR SELECT * FROM test;
open cur1 ;
if 检查cur1 是否 存在,若存在就先关闭