MySQL定义变量、建立存储过程以及=与:=的区别
1.declare
declare 变量名 变量类型 default 默认值;
DROP PROCEDURE IF EXISTS test1;
delimiter //
CREATE PROCEDURE test1()
BEGIN
DECLARE n int DEFAULT 1;
WHILE n < 100 DO
insert into user(username,password,create_time) values('000','1111',now());
set n = n + 1;
END WHILE;
END //
delimiter ;
call test1();
declare定义的变量 相当于一个局部变量 在end之后失效,而且declare只能在begin,end中定义。
2.set
set @变量名=值
DROP PROCEDURE IF EXISTS test2;
delimiter //
CREATE PROCEDURE test2()
BEGIN
SET @n=1;
WHILE @n < 100 DO
insert into user(username,password,create_time) values('000','1111',now());
SET @n:=@n+1;
END WHILE;
END //
delimiter ;
CALL test2();
此处的变量n不需要声明,MySQL会自动根据值类型来确定类型,这种变量要在其前面加上“@”符号,称之为会话变量,代表在整个会话过程起作用,有点类似于全局变量。
在set和update时,=和:=,是一样的,都有赋值的作用。
:=是赋值的作用,先执行@n+1,然后再赋值给@n