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

mysql 变量,流程控制与游标

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

1.变量

分为系统变量用户自定义变量

1.1系统变量

1.1.1系统变量分类

系统变量分为全局系统变量以及会话系统变量

查看所有全局变量

SHOW GLOBAL VARIABLES

查看所有会话变量

SHOW SESSION VARIABLESor
SHOW VARIABLES #默认是会话变量

为变量赋值

SET @@global.变量名 = 变量值
SET GLOBAL 变量名 = 变量值
-------
SET @@session.变量名 = 变量值
SET session 变量名 = 变量值

1.2 用户变量

  • 会话用户变量: 作用域和会话变量一样,只对当前连接会话有效

  • 局部变量: 只在BEGINEND语句块中有效.

1.2.1 会话用户变量
  • 变量的定义

#方式1: "="或":="
SET @用户变量 = 值;
SET @用户变量 := 值;
#方式2: ":="或INTO 关键字
SELECT @用户变量 := 表达式[FROM 等子句];
SELECT 表达式 INTO @用户变量 [FROM 等子句];
  • 使用

select @变量名
1.2.2局部变量
  • 定义: 可以使用DECLARE语句定义一个局部变量

  • 作用域: 仅仅在定义它的BEGIN...END中有效

  • 位置: 只能放在BEGIN...END中,而且只能放在第一句

声明方式
DECLARE 变量名 类型 [default 值];#没有default 初始值为null
赋值方式
SET 变量名 = 值;
SET 变量名 := 值;
或
SELECT 字段名 INTO 变量名

2.定义条件与处理程序

定义条件是事先定义程序执行过程中可能出现的问题,处理程序定义了在遇到错误时采取的处理方式

2.1定义条件

格式

DECLARE 错误名称 CONDITION FOR 错误码(或错误代码)

注意:

DECLARE ... CONDITION 只能在 存储过程存储函数触发器 的定义体中使用,因为它是 MySQL 的 复合语句 语法的一部分。这种语法用于定义局部的条件、变量、游标或处理逻辑,不能在普通的 SQL 查询或脚本中单独使用。

2.2定义处理程序

DECLARE 处理方式 HANDLER FOR 错误类型 处理语句
  • 处理方式 :

    • CONTINUE: 表示错误不处理,继续执行

    • EXIT : 表示遇到错误马上退出

    • UNDO: 表示遇到错误后撤回之前的操作. MySQL不支持

3.流程控制

3.1分支结构之 IF

和java差不多,注意格式

DELIMITER //
​
CREATE PROCEDURE update_salary_by_eidl(IN emp_id INT)
BEGINDECLARE hire_date DATE;DECLARE diff_year INT;DECLARE salary DOUBLE;
​-- 获取员工的入职日期SELECT hire_date INTO hire_date FROM employees WHERE employee_id = emp_id;
​-- 计算入职年数差SET diff_year = YEAR(CURDATE()) - YEAR(hire_date);
​-- 获取员工的当前薪资SELECT salary INTO salary FROM employees WHERE employee_id = emp_id;
​-- 如果员工入职年数大于等于5年,并且薪资小于8000,则增加薪资IF diff_year >= 5 THENIF salary < 8000 THENUPDATE employees SET salary = salary + 500 WHERE employee_id = emp_id;END IF;END IF;
​
END //
​
DELIMITER ;

3.2分支循环之 case

create procedure test_case(v1 int)
begincase v1when 1 thenselect 'v1=1';when 2 thenselect 'v1=2';when 3 thenselect 'v1=3';elseselect 'v1不等于1,2,3';end case;
end;

3.3循环结构 LOOP

create procedure update_salary_loop(out num int)
begindeclare avg_salary double;declare loop_count int default 0;select avg(salary) into avg_salary from employees;loop_label:loopif avg_salary <12000 thenupdate employees set salary = salary*1.1;elseif avg_salary >=12000 thenleave loop_label;end if;select avg(salary) into avg_salary from employees;set loop_count = loop_count + 1;end loop loop_label;set num = loop_count;
end;

结束循环要用leave,没有内置的条件检查。

循环次数由内部逻辑控制,需要显式退出。

3.4循环结构 WHILE

create procedure test_loop()
begindeclare i int;set i = 1;while i <= 10 doselect i;set i = i + 1;end while;
end;

while 条件 do 循环体

3.5循环结构 REPEAT

create procedure test_repeat()
begindeclare i int;set i = 1;#初始化条件repeatselect i;set i = i + 1;until i > 10end repeat;
end;

repeat至少会执行一次

3.6跳转语句 LEAVE

LEAVE 标记名

3.7跳转语句 ITERATE

相当于continue

4.游标

通过游标操作数据行上的数据

4.2游标的使用步骤

声明游标

DECLARE cursor_name CURSOR FOR
​
SELECT column1, column2 FROM table_name WHERE condition;

打开游标

OPEN cursor_name;

读取数据

FETCH cursor_name INTO var1, var2, ...;

关闭游标

CLOSE cursor_name;

相关文章:

mysql 变量,流程控制与游标

第16章_变量,流程控制与游标 1.变量 分为系统变量和用户自定义变量 1.1系统变量 1.1.1系统变量分类 系统变量分为全局系统变量以及会话系统变量 查看所有全局变量 SHOW GLOBAL VARIABLES 查看所有会话变量 SHOW SESSION VARIABLESor SHOW VARIABLES #默认是会话变量 …...

Java配置log4j日志打印

1. 引入依赖 <dependencies><!-- Log4j 2依赖 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>1.2.14</version> <!-- 可以根据需要修改版本 --></…...

什么是SQL?

什么是SQL&#xff1f; SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于与关系型数据库进行交互的标准编程语言。SQL 是设计用于管理和操作关系型数据库的语言&#xff0c;主要用于查询、插入、更新、删除和定义数据结构。SQL 是关…...

Linux 机器学习

Linux 机器学习是指在 Linux 操作系统环境下进行机器学习相关的开发、训练和应用。 具体步骤 环境搭建&#xff1a; 选择合适的 Linux 发行版&#xff1a;如 Ubuntu、Fedora、Arch Linux 等。Ubuntu 因其易用性和丰富的软件包管理系统&#xff0c;适合初学者&#xff1b;Fed…...

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载,Scroll滚动到顶部

HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载 效果展示 使用方法 import LoadingText from "../components/LoadingText" import PageToRefresh from "../components/PageToRefresh" import FooterBar from "../components/…...

第27章 汇编语言--- 设备驱动开发基础

汇编语言是低级编程语言的一种&#xff0c;它与特定的计算机架构紧密相关。在设备驱动开发中&#xff0c;汇编语言有时用于编写性能关键的部分或直接操作硬件&#xff0c;因为它是接近机器语言的代码&#xff0c;可以提供对硬件寄存器和指令集的直接访问。 要展开源代码详细叙…...

sosadmin相关命令

sosadmin命令 以下是本人翻译的官方文档&#xff0c;如有不对&#xff0c;还请指出&#xff0c;引用请标明出处。 原本有个对应表可以跳转的&#xff0c;但是CSDN的这个[](#)跳转好像不太一样&#xff0c;必须得用html标签&#xff0c;就懒得改了。 sosadmin help 用法 sosadm…...

【git】-初始git

学习资源推荐- 标签管理 - Git教程 - 廖雪峰的官方网站 一、什么是版本控制&#xff1f; 二、Git的安装 三、掌握Linux常用命令 四、Git基本操作 1、提交代码 2、查看历史提交 3、版本回退 一、什么是版本控制&#xff1f; 版本控制是一种用于记录文件或项目内容变化的系…...

JAVA之单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。在软件设计中&#xff0c;单例模式常用于控制对资源的访问&#xff0c;例如数据库连接、线程池等。以下是单例模式的详…...

无人机数据集,支持YOLO,COCO json,PASICAL VOC xml格式的标注,正确识别率可达到95.7%,10000张原始图片

无人机数据集&#xff0c;支持YOLO&#xff0c;COCO json&#xff0c;PASICAL VOC xml格式的标注&#xff0c;正确识别率可达到95.7%&#xff0c;10000张原始图片 下载地址&#xff1a; 标注好的数据集下载地址&#xff1a; yolo v11: https://download.csdn.net/download/p…...

Linux:进程概念(三.详解进程:进程状态、优先级、进程切换与调度)

目录 1. Linux中的进程状态 1.1 前台进程和后台进程 运行状态 睡眠状态 磁盘休眠状态 停止状态 kill指令—向进程发送信号 死亡状态 2. 僵尸进程 2.1 僵尸状态 2.2 僵尸进程 2.3 僵尸进程危害 3. 孤儿进程 4. 进程的优先级 概念 查看进程优先级 PRI&#xff08…...

stack和queue专题

文章目录 stack最小栈题目解析代码 栈的压入弹出序列题目解析代码 queue二叉树的层序遍历题目解析代码 stack stack和queue都是空间适配器 最小栈 最小栈的题目链接 题目解析 minst是空就进栈&#xff0c;或者是val < minst.top()就进栈 代码 class MinStack { public:M…...

一 rk3568 Android 11固件开发环境搭建 (docker)

一 目标 搭建 rk3568 android 系统内核 及固件开发编译调试环境, 支持开发环境导出分享 基于荣品 rk3568 核心板 系统环境: ubuntu22.04 /ubuntu20.04 64位桌面版 编译环境: docker + ubuntu20.04 , 独立的容器隔离环境,不受系统库版本冲突等影响,无性能损耗, 可…...

2025年华数杯国际赛B题论文首发+代码开源 数据分享+代码运行教学

176项指标数据库 任意组合 千种组合方式 14页纯图 无水印可视化 63页无附录正文 3万字 1、为了方便大家阅读&#xff0c;全文使用中文进行描述&#xff0c;最终版本需自行翻译为英文。 2、文中图形、结论文字描述均为ai写作&#xff0c;可自行将自己的结果发给ai&#xff0c…...

三小时深度学习PyTorch

【对新手非常友好】三小时深度学习PyTorch快速入门&#xff01;包教会你的&#xff01; --人工智能/深度学习/pytorch_哔哩哔哩_bilibili从头开始&#xff0c;把概率论、统计、信息论中零散的知识统一起来_哔哩哔哩_bilibili从编解码和词嵌入开始&#xff0c;一步一步理解Trans…...

朴素贝叶斯分类器

一、生成模型&#xff08;学习&#xff09;&#xff08;Generative Model&#xff09; vs 判别模型&#xff08;学习&#xff09;&#xff08;Discriminative Model&#xff09; 结论&#xff1a;贝叶斯分类器是生成模型 1、官方说明 生成模型对联合概率 p(x, y)建模&#x…...

商用车电子电气零部件电磁兼容条件和试验(2)—术语和定义

写在前面 本系列文章主要讲解商用车电子/电气零部件或系统的传导抗干扰、传导发射和辐射抗干扰、电场辐射发射以及静电放电等试验内容及要求&#xff0c;高压试验项目内容及要求。 若有相关问题&#xff0c;欢迎评论沟通&#xff0c;共同进步。(*^▽^*) 目录 商用车电子电气…...

SimpleFOC01|基于STM32F103+CubeMX,移植核心的common代码

导言 如上图所示&#xff0c;进入SimpleFOC官网&#xff0c;点击Github下载源代码。 如上图所示&#xff0c;找到仓库。 comom代码的移植后&#xff0c;simpleFOC的移植算是完成一大半。simpleFOC源码分为如下5个部分&#xff0c;其中communication是跟simpleFOC上位机通讯&a…...

物联网之传感器技术

引言 在数字化浪潮席卷全球的今天&#xff0c;物联网&#xff08;IoT&#xff09;已成为推动各行各业变革的重要力量。而物联网传感器&#xff0c;作为物联网感知层的核心技术&#xff0c;更是扮演着不可或缺的角色。它们如同人类的五官&#xff0c;能够感知物理世界中的各种信…...

React:构建用户界面的JavaScript库

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

基于TypeScript封装 `axios` 请求工具详解

TypeScript 项目中&#xff0c;封装一个详细的 axios 请求工具可以提高代码的可维护性、可重用性&#xff0c;并让请求逻辑与业务逻辑分离。以下是一个详细的封装示例&#xff0c;包括请求拦截器、响应拦截器、错误处理、以及类型定义。 1. 安装 Axios 首先&#xff0c;确保你…...

ElasticSearch在Windows环境搭建测试

引子 也持续关注大数据相关内容一段时间&#xff0c;大数据内容很多。想了下还是从目前项目需求侧出发&#xff0c;进行相关学习。Elasticsearch&#xff08;ES&#xff09;是位于 Elastic Stack&#xff08;ELK stack&#xff09; 核心的分布式搜索和分析引擎。Logstash 和 B…...

通信与网络安全管理之ISO七层模型与TCP/IP模型

一.ISO参考模型 OSI七层模型一般指开放系统互连参考模型 (Open System Interconnect 简称OSI&#xff09;是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型&#xff0c;为开放式互连信息系统提供了一种功能结构的框架。 它从低到高分别是…...

高级运维:shell练习2

1、需求&#xff1a;判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 vim check.sh #!/bin/bash# 定义网络前缀 network_prefix"192.168.1"# 循环遍历1-254的IP for i in {1..254}; do# 构造完整的IP地址ip"$network_…...

三相无刷电机控制|FOC理论04 - 克拉克变换 + 帕克变换的最终目标

导言 通过坐标系旋转&#xff0c;将电机中复杂的三相交流信号映射到与转子磁场同步的旋转参考系中&#xff0c;将动态问题转化为静态问题。这种方法的优点在于&#xff1a; 简化了控制逻辑。实现了转矩Iq和磁通Id的解耦。提供了直流量控制的可能性&#xff0c;大大提高了控制效…...

SAP FICO资产模块各元素基本关系总结

文章目录 【SAP系统研究】 #SAP #FICO #资产会计 ①&#xff1a;每个折旧表包含多个折旧范围&#xff0c;折旧范围用于设置资产的平行折旧&#xff0c;如不同的折旧范围可以更新不同的总账&#xff0c;更新不同的科目等。 ②&#xff1a;折旧表是要分配给公司代码的&#xff…...

Elasticsearch快速入门

Elasticsearch是由elastic公司开发的一套搜索引擎技术&#xff0c;它是elastic技术栈中的一部分,提供核心的数据存储、搜索、分析功能 elasticsearch之所以有如此高性能的搜索表现&#xff0c;正是得益于底层的倒排索引技术。那么什么是倒排索引呢&#xff1f; Elasticsearch…...

【Java数据结构】二叉树相关算法

第一题&#xff1a;获取二叉树中结点个数 得到二叉树结点个数&#xff0c;如果结点为空则返回0&#xff0c;然后再用递归计算左树结点个数根结点&#xff08;1个&#xff09;右树结点个数。 public int nodeSize(Node root){if (root null)return 0;return nodeSize1(root.l…...

30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <1> 5分钟快速创建一个springboot web项目

快速导航 <1> 5分钟快速创建一个springboot web项目 <2> 5分钟集成好最新版本的开源swagger ui&#xff0c;并使用ui操作调用接口 <3> 5分钟集成好druid并使用druid自带监控工具监控sql请求 <4> 5分钟集成好mybatisplus并使用mybatisplus generator自…...

vue3学习日记6 - Layout

最近发现职场前端用的框架大多为vue&#xff0c;所以最近也跟着黑马程序员vue3的课程进行学习&#xff0c;以下是我的学习记录 视频网址&#xff1a; Day2-17.Layout-Pinia优化重复请求_哔哩哔哩_bilibili 学习日记&#xff1a; vue3学习日记1 - 环境搭建-CSDN博客 vue3学…...

1/14 C++

练习&#xff1a;将图形类的获取周长和获取面积函数设置成虚函数&#xff0c;完成多态 再定义一个全局函数&#xff0c;能够在该函数中实现&#xff1a;无论传递任何图形&#xff0c;都可以输出传递的图形的周长和面积 #include <iostream>using namespace std; class Sh…...

【Uniapp-Vue3】页面生命周期onLoad和onReady

一、onLoad函数 onLoad在页面载入时触发&#xff0c;多用于页面跳转时进行参数传递。 我们在跳转的时候传递参数name和age: 接受参数&#xff1a; import {onLoad} from "dcloudio/uni-app"; onLoad((e)>{...}) 二、onReady函数 页面生命周期函数中的onReady其…...

使用 configparser 读取 INI 配置文件

使用 configparser 读取 INI 配置文件 适合于读取 .ini 格式的配置文件。 配置文件示例 (config.ini): [DEFAULT] host localhost port 3306 [database] user admin password secret import configparser# 创建配置解析器 config configparser.ConfigParser()# 读取配…...

类模板的使用方法

目录 类模板的使用方法 1.类模板语法 2.类模板和函数模板区别 3.类模板中成员函数创建时机 4.类函数对象做函数参数 5.类模板和继承 6.类模板成员函数类外实现 7.类模板分文件编写 person.hpp 实现cpp文件&#xff1a; 8.类模板与友元 9.类模板案例 MyArray.hpp …...

docker mysql5.7如何设置不区分大小写

环境 docker部署&#xff0c;镜像是5.7&#xff0c;操作系统是centos 操作方式 mysql 配置文件是放在 /etc/mysql/mysql.conf.d/mysqld.cnf&#xff0c; vim /etc/mysql/mysql.conf.d/mysqld.cnf lower_case_table_names1 重启mysql容器 验证 SHOW VARIABLES LIKE low…...

Docker与虚拟机的区别及常用指令详解

在现代软件开发中&#xff0c;容器化和虚拟化技术已经成为不可或缺的工具。Docker和虚拟机&#xff08;VM&#xff09;是两种常见的技术&#xff0c; 它们都可以帮助开发者在不同的环境中运行应用程序。然而&#xff0c;它们的工作原理和使用场景有很大的不同。本文将详细探讨D…...

C#异步和多线程,Thread,Task和async/await关键字--12

目录 一.多线程和异步的区别 1.多线程 2.异步编程 多线程和异步的区别 二.Thread,Task和async/await关键字的区别 1.Thread 2.Task 3.async/await 三.Thread,Task和async/await关键字的详细对比 1.Thread和Task的详细对比 2.Task 与 async/await 的配合使用 3. asy…...

第一次作业三种方式安装mysql(Windows和linux下)作业

在Windows11上安装sever&#xff08;服务&#xff09;端和客户端 server端安装 打开官网MySQL 进入到主页 点击DOWMLOAD 进入下载界面 点击下方MySQL Community (GPL) Downloads 进入社区版mysql下载界面 点击 MySQL Community Server 进入server端下载 选择8.4.3LTS&…...

ubuntu官方软件包网站 字体设置

在https://ubuntu.pkgs.org/22.04/ubuntu-universe-amd64/xl2tpd_1.3.16-1_amd64.deb.html搜索找到需要的软件后&#xff0c;点击&#xff0c;下滑&#xff0c; 即可在Links和Download找到相关链接&#xff0c;下载即可&#xff0c; 但是找不到ros的安装包&#xff0c; 字体设…...

深拷贝与浅拷贝

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…...

No one knows regex better than me

No one knows regex better than me 代码分析&#xff0c;传了两个参数zero,first&#xff0c;然后$second对两个所传的参数进行了拼接 好比&#xff1a;?zero1&first2 传入后就是: 12 然后对$second进行了正则匹配&#xff0c;匹配所传入的参数是否包含字符串Yeedo|wa…...

scala基础学习(数据类型)-集合

文章目录 集合创建集合isEmpty获取数据添加元素删除元素常见方法交集 &差集 diff --并集 unionto stringto listto Arrayto Map其余常用方法 集合 Scala Set(集合)是没有重复的对象集合&#xff0c;所有的元素都是唯一的。 Scala 集合分为可变的和不可变的集合。 默认情…...

如何使用 Excel 进行多元回归分析?

多元回归分析&#xff0c;一种统计方法&#xff0c;用来探索一个因变量&#xff08;即结果变量&#xff09;与多个自变量&#xff08;即预测变量&#xff09;之间的关系。广泛用于预测、趋势分析以及因果关系的分析。 听起来这个方法很复杂&#xff0c;但其实在 Excel 中可以很…...

思维转换:突破思维桎梏,创造更高效的工作与生活

在现代职场和生活中&#xff0c;我们经常面临着各种挑战和问题&#xff0c;有时候虽然付出了很多努力&#xff0c;但依然难以找到更有效的解决方案。这时&#xff0c;或许我们需要的不是更多的努力&#xff0c;而是一次“思维转换”。这一概念看似简单&#xff0c;但它背后却蕴…...

ClickHouse-CPU、内存参数设置

常见配置 1. CPU资源 1、clickhouse服务端的配置在config.xml文件中 config.xml文件是服务端的配置&#xff0c;在config.xml文件中指向users.xml文件&#xff0c;相关的配置信息实际是在users.xml文件中的。大部分的配置信息在users.xml文件中&#xff0c;如果在users.xml文…...

Spring Boot 项目启动后自动加载系统配置的多种实现方式

Spring Boot 项目启动后自动加载系统配置的多种实现方式 在 Spring Boot 项目中&#xff0c;可以通过以下几种方式实现 在项目启动完成后自动加载系统配置缓存操作 的需求&#xff1a; 1. 使用 CommandLineRunner CommandLineRunner 是一个接口&#xff0c;可以用来在 Spring…...

scrapy库解决ja3/tls指纹验证问题

pip install curl_cffi0.7.4 pip install scrapy-fingerprint0.1.3seetings.py打开中间件 DOWNLOADER_MIDDLEWARES { "scrapy_fingerprint.fingerprintmiddlewares.FingerprintMiddleware": 100 }yield scrapy.Request(urlurl,callbackself.parse) 改为以下 from sc…...

二进制、八进制、十进制和十六进制的相互转换

printf 函数 printf 函数是 C 语言中用于将格式化的数据输出到标准输出&#xff08;通常是屏幕&#xff09;的函数。它位于 stdio.h 头文件中&#xff0c;因此在使用之前需要包含该头文件。 printf 函数的格式说明符 格式说明符说明示例%d 或 %i输出或输入十进制有符号整数p…...

分布式缓存redis

分布式缓存redis 1 redis单机&#xff08;单节点&#xff09;部署缺点 &#xff08;1&#xff09;数据丢失问题&#xff1a;redis是内存存储&#xff0c;服务重启可能会丢失数据 &#xff08;2&#xff09;并发能力问题&#xff1a;redis单节点&#xff08;单机&#xff09;部…...

day08_Kafka

文章目录 day08_Kafka课程笔记一、今日课程内容一、消息队列&#xff08;了解&#xff09;**为什么消息队列就像是“数据的快递员”&#xff1f;****实际意义**1、产生背景2、消息队列介绍2.1 常见的消息队列产品2.2 应用场景2.3 消息队列中两种消息模型 二、Kafka的基本介绍1、…...