MySQL进阶-存储过程-变量语法结构
目录
一:变量
系统变量
用户定义变量
局部变量
二:结构
if结构
case when结构
while结构
一:变量
在MySQL中变量分为三种类型 : 系统变量、用户定义变量、局部变量。
系统变量
系统变量 是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话 变量( SESSION)。
1). 查看系统变量
--查看所有系统变量
SHOW [ SESSION | GLOBAL ] VARIABLES;
--可以能过LIKE模糊匹配方式查找变量
SHOW [ SESSION | GLOBAL ] VARIABLES LIKE '....'
--查看指定变量的值
SELECT @@ [SESSION | GLOBAL]
2). 设置系统变量
SET [ SESSION | GLOBAL ] 系统变量名 = 值 ;
SET @@ [SESSION | GLOBAL] 系统变量名 = 值 ;
演示示例 :
用户定义变量
用户定义变量 是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 "@变量 名 " 使用就可以。其作用域为当前连接。
1). 赋值
方式一 :
SET @var_name = expr [, @var_name = expr] ... ;
SET @var_name := expr [, @var_name := expr] ... ;
赋值时,可以使用 = ,也可以使用 :=
方式二 :
SELECT @var_name := expr [, @var_name := expr] ... ;
SELECT 字段名 INTO @var_name FROM 表名;
2). 使用
SELECT @var_name ;
注意: 用户定义的变量无需对其进行声明或初始化,只不过获取到的值为NULL。
演示案列:
局部变量
局部变量 是根据需要定义的在局部生效的变量,访问之前,需要DECLARE声明。可用作存储过程内的 局部变量和输入参数,局部变量的范围是在其内声明的BEGIN ... END块。
1). 声明
DECLARE 变量名 变1 量类型 [DEFAULT ... ] ;
变量类型就是数据库字段类型:INT、BIGINT、CHAR、VARCHAR、DATE、TIME等。
2). 赋值
SET 变量名 = 值 ;
SET 变量名 := 值 ;
SELECT 字段名 INTO 变量名 FROM 表名 ... ;
演示示例 :
二:结构
if结构
案列:
#if函数
delimiter $
create procedure pro_if(in score int)
begin
declare ds varchar(10) default'A';
if score > 85 then
set ds='A';
elseif score <= 85 and score > 75 then
set ds='B';
elseif score <= 75 and score > 60 then
set ds='C';
else
set ds='D';
end if;
select ds;
end $
delimiter ;
case when结构
案列:
#case when函数
delimiter $
create procedure pro_casewhen(in score varchar(1))
begin
declare ds varchar(10);
case score
when 'A' then
set ds = '大于85';
when 'B' then
set ds = '大于等于75小于85';
when 'C' then
set ds = '大于等于60小于75';
when 'D' then
set ds = '不及格';
else
set ds = '输入A-D';
end case;
select ds;
end $
delimiter ;
while结构
案列:
##while循环
delimiter $
create procedure pro_while()
begin
declare s int default 0;
declare i int default 0;
while i<=100 do
set s=s+i;
set i=i+1;
end while;
select s;
end $
delimiter ;