默认全局变量是两个@@开头, 可用show variables查看所有默认变量: @@user #declare定义变量只能用在储存过程中 #declare 变量名 数据类型 可选类型 declare num int; declare age int defalut 100; #定义全局变量, 可以用 set声明: #@变量名 #有两种写法, @name := value / @name = value set @age=18; set @age:=18; select @name:=user(); select @name=user(); mysql> select @a=password from mysql.user$ +-------------+ | @a=password | +-------------+ | 1 | | 1 | | 1 | +-------------+ 3 rows in set (0.00 sec) mysql> select @a:=password from mysql.user$ +-------------------------------------------+ | @a:=password | +-------------------------------------------+ | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-------------------------------------------+ #:=与=赋值时区别从上面可以看到 #:=显示结果, = 不会显示结果 #其实用:=/= 赋值都一样
注意这跟储存过程中定义有点不一样:
create procedure cc1111() begin declare gan char; set gan = user(); select gan; end$
储存过程中定义declare不用加@
储存过程中set也不用加@
储存过程中赋值也可用 := 或 =