当前位置: 首页 > news >正文

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 ;

相关文章:

  • 【嵌入式】——Linux系统远程操作和程序编译
  • 浅析vue2和vue3的区别
  • Amlogic S905L3 系列对比:L3A、L3B 与 L3AB 深度解析
  • Linux | I.MX6ULL 使用 Yocto 文件系统开发 QT
  • 【Easylive】Gateway 路由分配与接口调用机制
  • 电商平台计算订单成交额是不是要去除退款退货的
  • 2024年国考
  • 数字电子技术基础(五十)——硬件描述语言简介
  • 【笔记】网络安全管理
  • JVM原理与实战
  • 【问题笔记】解决python虚拟环境运行脚本无法激活问题
  • 240419 leetcode exercises
  • 2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)
  • DAY 49 leetcode 20--栈和队列.有效的括号
  • C++中动态多态类别浅析
  • C++之虚函数 Virtual Function
  • Matlab画海洋与大气变量的时间序列并带标记面的三维折线图--来源粉丝
  • 如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
  • Macvlan 网络类型详解:特点、优势与局限性
  • C++入门七式——模板初阶
  • “科技+萌点”机器人马拉松刷屏!宇树回应“半马摔倒”
  • 收藏家尤伦斯辞世,曾是中国当代艺术的推手与收藏者
  • 南华期货递表港交所,冲刺第二家“A+H”股上市期货公司
  • 网信部门持续整治利用未成年人形象不当牟利问题
  • 中华人民共和国和柬埔寨王国关于构建新时代全天候中柬命运共同体、落实三大全球倡议的联合声明
  • 十四届全国人大常委会第十五次会议将于4月27日至30日举行