vlambda博客
学习文章列表

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