MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环。
- create procedure pro11(IN t int)
- begin
- declare i int default 0;
- repeat
- insert into fangwenliang(id,count) VALUES(null,i);
- set i=i+1;
- until i>t
- end repeat;
- end
- call pro11(10)
- create procedure pro11(IN t int)
- begin
- declare i int default 0;
- while i<t do
- insert into fangwenliang(id,count) VALUES(null,i);
- set i=i+1;
- end while;
- end
- call pro11(10)
- create PROCEDURE pro11(IN t int)
- begin
- declare i int default 0;
- loop_lable:loop
- insert into fangwenliang(id,count) VALUES(null,i);
- set i=i+1;
- if i>=t then
- leave loop_lable;
- end if;
- end loop;
- end
- call pro11(10)
1、在这个例子中,INSERT和SET语句在WHILE和END WHILE之间,当变量i大于等于传入的参数t的时候就退出循环。使用set i=0;语句是为了防止一个常见的错误,如果没有初始化,i默认变量值为NULL,而NULL和任何值操作的结果都是NULL。
2、这个REPEAT循环的功能和前面WHILE循环一样,区别在于它的执行后检查是否满足循环条件(until i>=t),而WHILE则是执行前检查(while i<5 do)。不过要注意until i>=5后面不要加分号,如果加分号,就是提示语法错误。
3、还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱
阅读(776) | 评论(0) | 转发(0) |