。
分隔符$ $
DROP PROCEDURE IF EXISTS ` jbpm `` refresh roster `$
CREATE DEFINER = ` root `@ `% ` PROCEDURE ` refresh roster `(在hostname varchar(30)中)
BEGIN
DECLARE uname varchar(30);
为从ofuser中选择用户名声明cur1游标;
从ofroster中删除;
OPEN cur 1;
read_loop: LOOP
将cur1取入uname
update temp set TEXT _ = ' 1 ';
......
结束循环;
关闭cur1
END $ $
分隔符;
修改
分隔符$ $
DROP PROCEDURE IF EXISTS ` jbpm ` . ` refresh roster ` $
CREATE DEFINER = ` root `@ `% ` PROCEDURE ` refresh roster `( in hostname varchar(30))
BEGIN
DECLARE I int;
声明tc int
声明标志int
声明uname varchar(30);
为从ofuser中选择用户名声明cur1游标;
声明SQLSTATE '02000' SET flag = 3的CONTINUE处理程序;
SELECT count(*)into TC FROM of user;
从ofroster中删除;
设置I = 0;
OPEN cur 1;
read_loop: LOOP
将cur1取入uname
update temp set TEXT _ = ' 1 ';
如果i > tc那么
离开read _ loop
否则
.......
END IF;
SET I = I+1;
结束循环;
关闭cur1
END $ $
分隔符;添加了红色语句部分,我创建了一个表temp,只有一个字段,然后在每次循环时更新它,这样我就不会报告错误。使用了I和tc,因为我发现单纯使用FETCH是不会退出循环的,这可能是一个无限循环。