1.declare
declare变量名变量类型default默认值;
DROPPROCEDUREIFEXISTStest1;delimiter//CREATEPROCEDUREtest1()BEGINDECLAREnintDEFAULT1;WHILEnDOinsertintouser(username,password,create_time)values(,,now());setn=n+1;ENDWHILE;END//delimiter;calltest1();
declare定义的变量相当于一个局部变量在end之后失效,而且declare只能在begin,end中定义。
2.set
set
变量名=值DROPPROCEDUREIFEXISTStest2;delimiter//CREATEPROCEDUREtest2()BEGINSET
n=1;WHILEnDOinsertintouser(username,password,create_time)values(,,now());SETn:=n+1;ENDWHILE;END//delimiter;CALLtest2();此处的变量n不需要声明,MySQL会自动根据值类型来确定类型,这种变量要在其前面加上“
”符号,称之为会话变量,代表在整个会话过程起作用,有点类似于全局变量。在set和update时,=和:=,是一样的,都有赋值的作用。
:=是赋值的作用,先执行
n+1,然后再赋值给n