变量、流程控制与游标

SQL基础⑭ | 变量、流程控制与游标篇 【超全!!!SQL基础第十四篇】本文围绕MySQL的变量、流程控制与游标展开,介绍系统变量和用户变量的分类、使用,条件处理机制,流程控制语句及游标操作步骤,帮助你掌握存储过程和函数编程。SQL零基础入门必看! 阅读详情

变量

在这里插入图片描述

系统变量

在这里插入图片描述
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
在这里插入图片描述
在这里插入图片描述

查看系统变量

# 变量:系统变量(全局系统变量、会话变量)vs 用户自定义变量
# 查看系统变量
# 查看所有全局变量
show global variables ;
# 查看所有会话变量
show session variables ;
# 或者
show variables ;
# 查看满足条件的部分系统变量
show global variables like '%标识符%';
show global variables like 'admin_%';
# 查看满足条件的部分会话变量
show session variables like '%标识符%';
show session variables like '%admin_%'

查看指定系统变量

作为mysql编码规范,MySQL中的系统变量以两个@@开头,其中@@global仅用于标记全局系统变量,@@session仅用于标记会话中的系统变量。@@首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量
在这里插入图片描述

# 查看指定系统变量的值
select @@global.变量名;
# 查看指定的会话变量的值
select @@session.变量名;
# 或者
select @@变量名;
# 查看指定系统变量的值
-- 查看全局最大连接数
select @@global.max_connections;
# 查看指定的会话变量的值
-- 当前会话的mysql连接的id
select @@session.pseudo_thread_id;
# 或者
select @@pseudo_thread_id;

修改系统变量的值

在这里插入图片描述

# 修改系统变量的值
# 方式1
set @@global.max_connections = 161;
# 方式2
set global max_connections  =171;
# 全局系统变量:针对于当前的数据库实例是有效的,一旦重启mysql服务,就失效了
select @@global.max_connections;
# 会话系统变量
# 方式1:
set @@session.character_set_client='gbk';
# 方式2:
set session character_set_client ='gbk';
# 针对于当前会话是有效的,一旦结束会话,重新建立起新的会话,就失效了

用户变量

用户变量分类

在这里插入图片描述

会话用户变量

会话变量不需要指定类型
定义
在这里插入图片描述
在这里插入图片描述

# 用户变量
/**
  1.用户变量:会话用户变量vs局部变量
  2.会话用户变量:使用@开头,作用域为当前会话
  3.局部变量:只能使用在存储过程和存储函数中的
 */
# 会话用户变量
# 方式1
set @m1 =1;
set @m2 :=2;
set @sum :=@m1+@m2;
select @sum;
# 方式2
select count(1) into @count from emp;
select @count;
# 查看某个未声明的变量时,将得到null值
select @big;

局部变量

在这里插入图片描述

# 定义变量
# declare 变量名 类型[default 值];# 如果没有default子句,初始值为null
declare myparam int default 100;
# 变量赋值
# 方式1:一般用于赋简单的值
set 变量名 = 值;
set 变量名 :=值;
# 方式2:一般用于赋表中的字段值
select 字段名或表达式 into 变量名 from 表;
# 使用变量 (查看、比较、运算等)
select 局部变量名;
# 局部变量必须满足
/*
局部变量必须 1.使用declare声明 2.声明并使用在begin..end中(使用在存储过程 ,函数中)
declare的方式声明的局部变量必须声明在begin中的首行的位置
*/
# 声明局部变量,分别赋值
delimiter $
create procedure test_var()
begin
#     声明局部变量
    declare a int default 0;
    declare b int;
#  declare a,b int default 0;
    declare emp_name varchar(25);
#     赋值
    set a=1;
    set b :=2;
select ename into emp_name from emp where empno=7499;
# 使用
    select a,b,emp_name;
end $
delimiter ;

# 调用存储过程
call test_var();

定义条件与处理程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 定义条件
# 格式 declare 错误名称  conition for 错误码(或错误条件)
# 例子:定义'Field_Not_Be_NULL'错误名与MySQL中违反非空约束的错误类型是'ERROR 1048(23000)'对应
# 方式1 使用MySQL_error_code
declare Field_Not_Be_NULL condition for 1048;
# 方式2:使用sqlstate_value
declare Field_Not_Be_NULL condition for SQLSTATE '2300';

定义处理程序

在这里插入图片描述
在这里插入图片描述

# 定义处理程序
# 格式:declare 处理方式 handler for 错误类型 处理语句
# 举例
# 方法1:捕获sqlstate value
declare continue handler for sqlstate '42s02' set @info='NO_SUCH_TABLE';
# 方法2:捕获mysql_error_value
declare continue handler for 1146 set @info='NO_SUCH_TABLE';
# 方法3 先定义条件,再调用
declare no_such_table continue for 1146;
declare continue handler for NO_SUCH_TABLE set @info='NO_SUCH_TABLE';

# 方法4:使用SQLWARNING
declare exit handler for sqlwarning set @info='NO_SUCH_TABLE';
# 方法5:使用not found
declare exit handler for not found set @info='NO_SUCH_TABLE';

# 方法6 使用sqlexception
declare exit handler for sqlexception set @info='ERROR';


流程控制

在这里插入图片描述

分支结构之if

在这里插入图片描述

# 分支结构之if
delimiter $
create procedure test_if()
begin
#     声明局部变量
    declare stu_name varchar(15);
    if stu_name is null
        then select 'stu_name is null';
    end if;
end $
delimiter ;
# 调用
call test_if();
# 分支结构之if
delimiter $
create procedure test_if2()
begin
# 二选一
#     声明局部变量
    declare email varchar(15);
    if email is null
        then select 'email is null';
    else
        select 'email is not null';
    end if;
end $
delimiter ;
# 调用
call test_if2();
# 分支结构之if
delimiter $
create procedure test_if3()
begin
#     多选1
#     声明局部变量
    declare age int default 20;
    if age > 40
    then
        select '中老年';
    elseif age > 18
    then
        select '青壮年';
    elseif age > 8
    then
        select '青少年';
    else
        select '婴幼儿';
    end if;

end $
delimiter ;
# 调用
call test_if3();
# 声明存储过程update_salary_by_id,定义in参数emp_id,输入员工编号
# 判断该员工薪资如果低于8000元并且入职时间超过5年,就涨薪500元,否则就不变
delimiter $
create procedure update_salary_by_id(in emp_id int)
begin
    #声明局部变量
    declare emp_sal double;
    declare hire_date date;
    declare hire_year double;
    # 赋值
    select sal into emp_sal from emp where empno = emp_id;
    select hiredate into hire_date from emp where empno=emp_id;
    select datediff(current_date(),hire_date)/365 into hire_year;
    if emp_sal <8000 and  hire_year>5 then
        update emp set sal = sal+5000 where empno=emp_id;
    end if;
end $
delimiter ;

# 调用存储过程
call update_salary_by_id(7369);
# 查询数据
select * from emp where empno=7369;

分支结构之CASE

Case语句的语法结构1

# 情况1:类似switch
case 表达式
when 值1 then 结果1或语句1(如果是语句,需要加分号)
when 值2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n语句n(如果是语句,需要加分号)
end [case](如果是放在begin end中需要加上case,如果放在select后面不需要)

Case语句的语法结构2

# 情况2:类似多重if
case
when 值1 then 结果1或语句1(如果是语句,需要加分号)
when 值2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n语句n(如果是语句,需要加分号)
end [case](如果是放在begin end中需要加上case,如果放在select后面不需要)

例子1

# 分支结构之case
delimiter $
create procedure test_case()
begin
    # 演示1:case ... when ... then...
    declare var int default 2;
    case var
        when 1 then select 'var=1';
        when 2 then select 'var=2';
        when 3 then select 'var=3';
        else select 'other value';
        end case;
end $
delimiter ;
# 存储过程调用
call test_case();

例子2

# 分支结构之case
delimiter $
create procedure test_case2()
begin
    # 演示2:case ... when ... then...
    declare var int default 10;
    case
        when var >= 100 then select '三位数';
        when var >= 10 then select '两位数';
        else select '个位数';
        end case;
end $
delimiter ;
# 存储过程调用
call test_case2();
# 例子3
# 声明存储过程update_salary_by_empno,定义in参数emp_id,输入员工编号
# 判断该员工薪资如果低于9000元,就更新薪资为9000元;薪资大于等于9000元且低于10000的
# 但是奖金比例为null的,就更新奖金比例为0.01,其他的涨薪100元
delimiter $
create procedure update_salary_by_empno(in emp_id int)
begin
    # 局部变量的声明
    declare emp_sal double;#记录员工的工资
    declare bonus double;#记录员工的奖金率
    # 局部变量的赋值
    select sal into emp_sal from emp where empno=emp_id;
    select comm into bonus from emp where empno=emp_id;
    case
        when emp_sal < 9000 then update emp set sal = 9000 where empno = emp_id;
        when emp_sal < 10000 and bonus is null then update emp set comm = 0.01 where empno = emp_id;
        else
            update emp set sal=sal + 100 where empno = emp_id;
    end case;
end $
delimiter ;
# 调用存储过程
call update_salary_by_empno(7369);

循环结构之Loop

在这里插入图片描述

#循环结构-Loop
# 使用Loop语句进行循环操作,id值小于10时将重复执行循环过程
delimiter $
create procedure test_loop()
begin
    declare id int default 0;
    add_loop:loop
        set id = id + 1;
        if id >= 10
            then leave add_loop;
        end if;
    end loop add_loop;
    # 查看 id
    select id;
end $
delimiter ;

# 存储过程调用
call test_loop(); -- 输出 id=10

循环结构之while

while语句创建一个带条件判断的循环过程,while在执行语句时,先对指定的表达式进行判断,如果为真,就执行循环体的语句,否则退出循环。while语句的基本格式如下

[while_label:] while 循环条件 do
循环体
end while [while_label];

while_label为while语句的标注名称;如果循环条件结果为真,while语句内的语句或语句群被执行,且主循环条件为假,退出循环。

# 循环结构之while
/*
[while_label:]while 循环条件 do
循环体
end whil[while_label];
*/
delimiter //
create procedure test_while()
begin
    # 初始化条件
    declare num int default 1;
    while num<=10 do
        # 循环体(略)
        # 迭代条件
        set num = num+1;
    end while;
    select num;
end //
delimiter ;
# 调用存储过程
call test_while();
/*
凡是循环结构,一定具备4个要素:
1.初始化条件
2.循环条件
3.循环体
4.迭代条件
*/

循环体结构之repeat

# 循环结构之repeat
/*
[repeat_label:] repeat
循环体的语句
until 结束循环的条件表达式
end repeat [repeat_label]
*/
delimiter //
create procedure test_repeat()
begin
    #声明变量
    declare num int default 1;
    repeat
        set num=num+1;
    until num>=10
    end repeat ;
    # 查看num
    select num;
end //
delimiter ;

# 调用
call test_repeat();

在这里插入图片描述
在这里插入图片描述

跳转语句之Leave语句

在这里插入图片描述

# Leave的使用
/*
  创建存储过程leave_begin,声明int类型的In参数num。给begin...end加标记
  并在begin... end中使用if语句判断num参数的值
  如果num<=0,则使用leave语句退出begin...end;
  如果num=1,则查询emp表中的平均薪资
  如果num=2,则查询emp表中的最低薪资
  如果num>2,则查询emp表中的最高薪资
  if语句结束后查询emp表的总人数
 */
delimiter //
create procedure leave_begin(in num int)
begin_label:begin
    if num<=0
        then leave begin_label;
    elseif num=1
        then select avg(sal) avgSal from emp;
    elseif num=2
        then select min(sal) minSal from emp;
    else
        select max(sal) maxSal from emp;
    end if;
    # 查询总人数
    select count(1) zs from emp;
end //
delimiter ;

# 调用存储过程
call leave_begin(1);
call leave_begin(2);
call leave_begin(3);

跳转语句之Iterate语句

在这里插入图片描述

# 跳转语句之Iterate语句
# 定义局部变量num,初始值为0。循环结构中执行num+1操作
# 如果num<10,则继续执行循环
# 如果num>15,则退出循环结构
delimiter //
create procedure test_iterate()
begin
    declare num int default 0;
    my_loop:loop
        set num = num + 1;
        if num < 10
        then
            iterate my_loop;
        elseif num > 15
        then
            leave my_loop;
        end if;
        select num;
    end loop my_loop;
end //
delimiter ;
# 调用存储过程
call test_iterate();

游标

在这里插入图片描述

使用游标步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 游标
/*
    游标使用的步骤:
    1.声明游标
    2.打开游标
    3.使用游标(从游标中获取数据)
    4.关闭游标
*/
# 创建存储过程get_count_by_limit_total_salary(),声明in参数limit_total_salary double类型,
# 声明out参数total_count in 类型,函数的功能可以实现累加薪资最高的几个员工的薪资值,直到薪资总和达到limt_total_salary参数的值
# 返回累加的人数给total_count
delimiter //
create procedure get_count_by_limit_total_salary(in limit_total_salary double,out total_count int)
begin
    # 定义局部变量
    declare sum_sal double default 0.0;# 记录累加的工资总和
    declare emp_sal double;# 记录每一个员工的工资
    declare emp_count int default 0;#记录累加的人数
    # 声明游标
    declare emp_cursor cursor for select sal from emp order by sal desc;
    # 打开游标
    open emp_cursor;
    loop_label:loop
        # 使用游标
        fetch emp_cursor into emp_sal;
        set sum_sal=sum_sal+emp_sal;
        set emp_count=emp_count+1;
        if sum_sal >= limit_total_salary
            then leave loop_label;
        end if;
    end loop ;
    # 关闭游标
    close emp_cursor;
    set total_count = emp_count;
end //
delimiter ;

# 调用存储过程
call get_count_by_limit_total_salary(200000,@total_count);
select @total_count;



在这里插入图片描述

MySQL_第15章_变量、流程控制与游标 在数据库开发中,如何编写更灵活、高效的 SQL 代码?本篇文章深入解析 数据库变量 的使用、流程控制(如 IF、CASE、LOOP) 的应用,以及 游标(Cursor) 在批量数据处理中的优势。通过详细示例和最佳实践,帮助您掌握这些关键功能,提高数据库操作的灵活性与效率。无论是 SQL 初学者,还是想提升数据库编程能力的开发者,这篇文章都值得一读 阅读详情

相关推荐

以太网接口及POE设计

PoE标准 Power Over Ethernet 是有源以太网供电的简称 通过Cat-5电缆供电在IEEE 802.3af以太网供电标准中进行了定义。PoE标准以前限制在几瓦以内,但更新的PoE技术可实现更高的功率。例如,PoE+允许每端口功率高达25 W,而PoE++(四 对以太网供电系统)通过使用现有电缆的所有电线允许70 W到100 W的功率。与此PoE标准并行的是ADI公司定义的专有标准 LTPoE++™,该标准定义高达90W的受电设备(PD)功率规范(请参见表1)。 表1. ADI...

u010783226的专栏 1万+

MySQL——16 变量、流程控制与游标

文章目录1.变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量2 .定义条件与处理程序2.1 案列分析2.2 定义条件2.3 定义处理程序2.4 案例解决3. 流程控制3.1 分支结构之IF3.2 分支结构之CASE3.3 循环结构之LOOP3.4 循环结构之WHILE3.5 循环结构之REPEAT3.6 对比三种循环结构3.7 跳转语句之LEAVE语句(break)3.7 跳转语句之ITERATE语句(continue)4. 游标4.1 什么是游标(或光标)4.2 使用游标步骤4.3

weixin_45483328的博客 812

红外图像和可见光图像异源图像配准问题研究

本文旨在研究一种具有高准确率和鲁棒性的融合图像障碍物检测技术,通过把红外和可见光图像进行图像配准和融合,获取高质量的异源融合图像,根据融合图像的特点采用有效的障碍物检测算法,将图像中的障碍物准确检出。......

G_redsky的博客 1万+

mysql数据库流程控制

判断结构 循环结构 顺序结构

qq_39746820的博客 1162

MTK Sensor驱动调试实战:从AP到SCP的完整流程解析

本文详细解析了MTK平台Sensor驱动从AP侧到SCP侧的完整调试流程。内容涵盖AP侧驱动集成、DTS配置、内核编译与验证,以及SCP侧Tinysys框架下的代码集成、Overlay配置与I2C设置等核心步骤,并分享了中断唤醒、功耗优化及传感器数据校准等实战经验与常见问题排查方法,为硬件驱动工程师提供了一份全面的实战指南。

weixin_29175469的博客 351

AD936x Evaluation Software 详细配置

作者:ShownSun 工作室:时沿科技 文章目录AD936x Evaluation Software详细配置1 系统概述2 AD9361 Wireless Transceiver Evaluation Setup2.1 标签描述2.2 用户参数2.3详细配置3 AD936x RF Wizard3.1 标签描述3.2 用户参数3.3 详细配置4 AD936x Digital Filter Wizard4.1 标签描述4.1.1 时钟配置4.1.2 滤波器配置4.1.3 接收滤波器配置4.1.4 发射滤..

ShownSun博客 5189

数据库中游标的使用

1. 为何使用游标: 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。 2. 如何使用游标: 一般地,使用游标都遵循...

weixin_30418341的博客 1129

YOLOv8人工智能与深度学习——强化学习

本文介绍了将YOLOv8目标检测模型与强化学习结合的方法。主要应用包括自适应目标检测(动态调整检测参数)、主动学习(智能选择标注样本)和多目标跟踪优化。实现方案采用深度Q网络策略,通过定义状态表示、动作空间和奖励函数,使检测系统能根据环境反馈优化性能。该方法具有自适应优化、资源高效、持续改进等优势,能构建更智能的计算机视觉系统。文章详细说明了强化学习环境的构建、策略网络的实现以及训练过程,并提供了代码示例。

u010117029的博客 259

ResultSet 游标控制

之前在建立Statement或 PreparedStatement,您所使用的是Connection无参数的createStatement()与 preparedStatement(),这样取得的Statement其执行SQL后得到的ResultSet,将只能使用next()方法逐笔取得查询结果。 您可以在建立Statement事务时指定resultSetType,可指定的参数有 Res

滔滔的专栏 7434

竞赛经验——挑战杯、互联网加、北斗杯、微软创新杯、计算机设计等比赛教训与经验

最近参加一些比赛,北斗杯、挑战者杯、微软创新杯等比赛,每次比赛都有不少需要总结的地方,特别是项目展示上技巧很多,总结一下。 首先最重要的是作品自身硬!自身的作品完成度不高,或者是没有创新点,就没必要参加了。 比如是出去比赛的话,我反正每次碰到最多的是智慧农场、智慧家居之类,不知道为啥这种的太多了。如果是创业型比赛,评委基本会问小米已经做得很好了很便宜了,你的优势在哪里?这些都是常见的问题提前要...

沉迷单车的追风少年 7325

(王道408考研操作系统)第一章计算机系统概述-第三节2:中断和异常

注意!!! 本节内容和《计算机组成原理》中的中断有重合,如果需要详细了解的话可以点击链接跳转:(计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式 为了内容完整,部分内容会借用上述文章 文章目录一:中断和异常的基本概念(1)中断和异常的定义 一:中断和异常的基本概念 在操作系统引入核心态和用户态这两种工作状态后,就需要考虑两种状态之间是如何切换的。 操作系统内核工作在核心态,用户程序工作在用户态,系统不允许用户程序使用核心态的功能,但是用户程序为了完成某些操作又必须使用这些功能

快乐江湖的博客 3528

02-06 MySQL中使用游标-触发器

游标 select检索返回的一组行称为结果集,结果集里的行都是根据你输入的sql语句检索出来的,如果不使用游标,你将没有办法得到第一行,前十行或者是下一行 下面是一些常见的游标现象和特性 能够标记游标为只读,是数据能够读取,但不能被更新或者删除 能控制可以执行的定向操作(向前,向后,第一,最后、绝对位置和相对位置等) 能标记某些行为可编辑的,而另一些行为不可编辑的 能规定范围,使游标对创建它的特定请求或者是所有请求可访问 Cursor declarations must appear before han

牛奶牛撕面包的博客 427

ROS2 机械臂末端刀具执行曲面路径规划入门教程

Noether工具路径规划系统摘要 Noether是一款用于网格曲面刀具路径规划的软件,支持喷涂、打磨、检测等机器人工艺流程。其核心流程分为三步:1)网格修改(平滑、分割等预处理);2)刀具路径规划(生成有序路径点序列);3)刀具路径修改(姿态调整等后期处理)。系统提供栅格规划和边界规划两种模式,支持自定义扩展。配套GUI工具可配置完整流程,包含网格处理、路径生成和可视化功能。通过示例演示了多组件网格处理、拼图边缘铣削等典型应用场景,并指导用户进行插件开发,实现圆柱体提取、摄像机悬停等定制化功能。系统采用模

机器人控制与仿真应用 914

【SQL】之变量,流程控制与游标

【SQL】之变量,流程控制与游标一、变量系统变量查看系统变量修改系统变量用户变量会话用户变量局部变量二、定义条件与处理程序定义条件定义处理程序三、流程控制if···elseif···else···end if 一、变量 系统变量 系统变量分为全局系统变量(需要添加global 关键字)以及会话系统变量(需要添加 session 关键字),有时也把全局系统变量简称为全局变量,有时也把会话系统变量称为local变量。如果不写,默认会话级别。静态变量(在 MySQL 服务实例运行期间它们的值不能使用 set 动态

null 1519

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

变量,流程控制与游标

变量,流程控制与游标 变量 在MYSQL中数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在MYSQL数据库中,变量分为系统变量和用户自定义变量。 系统变量 系统变量分类 变量由系统定义,不是用户定义,属于 服务器 层面。启动MySQL服务,生成MySQL服务实例期间, MySQL将为MySQL服务器内存中的系统变量赋值,这些系统变量定义了当前MySQL服务实例的属性、特 征。这些系统变量的值要么是 编译MySQL时参数 的默认值,要么是 配置文件 (例如my

weixin_47267628的博客 1355

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MySQL变量、流程控制与游标

SET @用户变量 = 值;或SET @用户变量 := 值;使用DECLARE语句定义一个局部变量。作用域:只在BEGIN和END中间有效。定义条件是事先定义程序执行过程中可能遇到的问题,处理程序定义了在遇到问题时的处理方式,并且保证存储过程或存储函数在遇到警告时能继续执行。定义条件就是给MySQL中的错误码命名,有助于存储的程序代码更清晰。定义条件将一个错误名字和指定的错误条件关联起来。这个名字可以随后被用在处理程序的DECLARE HANDLER语句中。

曦 1248

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

十六、变量、流程控制与游标

这篇文章详细介绍了MySQL数据库中变量的使用,包括系统变量和用户变量,以及如何定义条件和处理程序来增强存储过程的异常处理能力。文章还探讨了流程控制语句,包括分支结构(IF和CASE)和循环结构(LOOP、WHILE和REPEAT),以及如何使用跳转语句(LEAVE和ITERATE)来控制流程。最后,文章解释了游标的概念和使用步骤,包括声明、打开、获取数据和关闭游标,以及MySQL 8.0中全局变量持久化的新特性。

weixin_44063529的博客 969

第16章变量、流程控制与游标

第16章变量、流程控制与游标 变量 MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在 MySQL 数据库中,变量分为 系统变量 以及 用户自定义变量 。 系统变量 系统变量分类 变量由系统定义,不是用户定义,属于 服务器 层面。启动MySQL服务,生成MySQL服务实例期间, MySQL将为MySQL服务器内存中的系统变量赋值,这些系统变量定义了当前MySQL服务实例的属性、特征。这些系统变量的值要么是 编译MySQL时参数 的默认值,要么是 配置

记录学习过程中的笔记 266

mysql 变量,流程控制与游标

定义条件是事先定义程序执行过程中可能出现的问题,处理程序定义了在遇到错误时采取的处理方式格式DECLARE 错误名称 CONDITION FOR 错误码(或错误代码)注意只能在存储过程存储函数或触发器的定义体中使用,因为它是 MySQL 的复合语句语法的一部分。这种语法用于定义局部的条件、变量、游标或处理逻辑,不能在普通的 SQL 查询或脚本中单独使用。DECLARE 处理方式 HANDLER FOR 错误类型 处理语句CONTINUE: 表示错误不处理,继续执行EXIT: 表示遇到错误马上退出。

2402_86577162的博客 890

16.变量、流程控制与游标

第16章 变量、流程控制与游标 1. 变量 1.1 系统变量 1.1.1 系统变量分类 系统变量分为全局系统变量(需要添加global关键字)以及会话系统变量(需要添加session关键字),有时也把全局系统变量简称为全局变量,有时也把会话系统变量称为local变量。**如果不写,默认会话级别。**静态变量(在 MySQL 服务实例运行期间它们的值不能使用 set 动态修改)属于特殊的全局系统变量。 每一个MySQL客户机成功连接MySQL服务器后,都会产生与之对应的会话。会话期间,MySQL服务实例会在M

weixin_44451166的博客 202

MySQL笔记:第16章_变量、流程控制与游标

第16章_变量、流程控制与游标1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 对比会话用户变量与局部变量演示代码2. 定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4 案例解决演示代码3. 流程控制3.1 分支结构之 IF3.2 分支结构之 CASE3.3 循环结构之LOOP3.4 循环结构之WHILE3.5 循环结构之REPEAT对比三种循环结构:3.6 跳

IAMLSL的博客 1926

第16章_变量、流程控制与游标

mysql笔记之变量、流程控制与游标

xiaojiaxins的博客 1622

MySQL的变量、流程控制与游标

MySQL的变量、流程控制与游标

ggggggzzzzz的博客 732
上一篇: mysql存储过程和函数
下一篇: 常见的SQL在线练习平台
迷失的小鹿
博客等级 码龄8年 1万+粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值