mysql loop循环实例_MySql CURSOR+LOOP循环-使用小实例

转载自https://blog.csdn.net/starinbrook/article/details/77078126

转载自https://blog.csdn.net/makang456/article/details/53896346/

【简介】

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。

游标充当指针的作用。

尽管游标能遍历结果中的所有行,但他一次只指向一行。

游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。

【用法】

一、声明一个游标: declare 游标名称 CURSOR for table;(这里的table可以是你查询出来的任意集合)

二、打开定义的游标:open 游标名称;

三、获得下一行数据:FETCH  游标名称 into testrangeid,versionid;

四、需要执行的语句(增删改查):这里视具体情况而定

五、释放游标:CLOSE 游标名称;

注:mysql存储过程每一句后面必须用;结尾,使用的临时字段需要在定义游标之前进行声明。

【实例说明】

有两个表stu_info、stu_info_bak,表结构完全一致,建表脚本如下:

CREATE TABLE `stu_info` (

`stuId` varchar(20) NOT NULL COMMENT '学号',

`stuName` varchar(20) NOT NULL COMMENT '姓名',

`phone` varchar(11) DEFAULT NULL COMMENT '手机号码',

`idNumber` varchar(20) DEFAULT NULL COMMENT '身份证号码',

PRIMARY KEY (`stuId`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生信息';

CREATE TABLE `stu_info_bak` (

`stuId` varchar(20) NOT NULL COMMENT '学号',

`stuName` varchar(20) NOT NULL COMMENT '姓名',

`phone` varchar(11) DEFAULT NULL COMMENT '手机号码',

`idNumber` varchar(20) DEFAULT NULL COMMENT '身份证号码',

PRIMARY KEY (`stuId`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生信息备份';

stu_info表中有几条数据,stu_info_bak中没有数据,现在想要把stu_info中的数据全部备份到stu_info_bak表中。

【处理脚本】

delimiter $$

drop procedure if exists `proc_copy_stu_info` $$

CREATE PROCEDURE `proc_copy_stu_info`()

BEGIN

##定义变量

DECLARE done INT DEFAULT FALSE;

DECLARE v_stuId VARCHAR(20);

DECLARE v_stuName VARCHAR(20);

DECLARE v_phone VARCHAR(11);

DECLARE v_idNumber VARCHAR(20);

##创建游标,并存储数据

DECLARE cur CURSOR FOR SELECT stuId,stuName,phone,idNumber FROM stu_info;

##游标中的内容执行完后将done设置为true

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;

##打开游标

OPEN cur;

##执行循环

read_loop : LOOP

##取游标中的值

FETCH cur INTO v_stuId,v_stuName,v_phone,v_idNumber;

##判断是否结束循环,一定要放到FETCH之后,因为在fetch不到的时候才会设置done为true

##如果放到fetch之前,先判断done,这个时候done的值还是之前的循环的值,因此就会导致循环一次

IF done THEN

LEAVE read_loop;

END IF;

## 执行SQL操作

SET @sql_insert = CONCAT("insert into stu_info_bak(stuId,stuName,phone,idNumber) VALUES ('",v_stuId,"','",v_stuName,"','",v_phone,"','",v_idNumber,"')");

PREPARE sqlli FROM @sql_insert;

EXECUTE sqlli;

COMMIT;

END LOOP read_loop;

##释放游标

CLOSE cur;

END

$$

delimiter;

call `proc_copy_stu_info`();

commit;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react数据从本地读取_如何将从Google表格读取的React应用程序部署到Netlify

react数据从本地读取In this tutorial, we’re going to cover how to connect to a spreadsheet hosted on Google, display that information inside a React application, and deploy it to Netlify.在本教程中,我们将介绍如何连接到Google托管的电子表格&#x…

leetcode743. 网络延迟时间(迪杰斯特拉算法)

有 N 个网络节点,标记为 1 到 N。 给定一个列表 times,表示信号经过有向边的传递时间。 times[i] (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。 现在,我们从某个…

在线python视频教程_【好程序员】2019 Python全套视频教程2

2019千锋好程序员全新Python教程,深入浅出的讲解Python语言的基础语法,注重基本编程能力训练,深入解析面向对象思想,数据类型和变量、运算符、流程控制、函数、面向对象、模块和包、生成器和迭代器。教程列表:千锋Pyth…

洛谷——P1546 最短网络 Agri-Net

P1546 最短网络 Agri-Net 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享…

漫谈单点登录(SSO)(淘宝天猫)(转载)

1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是&…

mysql mdl 锁_MySQL MDL锁

MDL全称为metadata lock,即元数据锁。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务(显式或隐式)的时候,不可以对元数据进行写入操作。因此从MySQL5.5版本开始引入了MDL锁,来保护表的元数据信息,用于解决…

Card Game Again CodeForces - 818E (双指针)

大意: 给定序列, 求多少个区间积被k整除. 整除信息满足单调性, 显然双指针. 具体实现只需要考虑k的素数向量, 对每一维维护个指针即可. 这题看了下cf其他人的做法, 发现可以直接暴力, 若当前的前缀积模k为0, 暴力向前求出第一个后缀积为0的位置即可, 复杂度是$O(n)$的并且相当好…

pacf和acf_如何通过Wordpress API,ACF和Express.js使Wordpress更加令人兴奋

pacf和acfby Tyler Jackson泰勒杰克逊(Tyler Jackson) 如何通过Wordpress API,ACF和Express.js使Wordpress更加令人兴奋 (How to make Wordpress more exciting with the Wordpress API, ACF, & Express.js) I’ve been working with Wordpress since it’s pr…

python运行出现数据错误_Python运行出错情况

1、错误内容:You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory str). It is highly recommended that you instead just switch your application to Unicode strings.错误描述&#x…

leetcode95. 不同的二叉搜索树 II(递归)

给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。示例:输入:3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种不同结构的二叉搜索树…

数据结构探险系列—栈篇-学习笔记

数据结构探险—栈篇 什么是栈? 古代栈就是牲口棚的意思。 栈是一种机制:后进先出 LIFO(last in first out) 电梯 栈要素空栈。栈底,栈顶。没有元素的时候,栈顶和栈底指向同一个元素,如果加入新元…

MYSQL远程登录权限设置 ,可以让Navicat远程连接服务器的数据库

Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录:1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY WITH GRANT OPTION;IDENTIFIED BY后跟的是密码,可设为空。2. FLUSH privileges; 更新Mysql为了安…

time series 时间序列 | fractional factorial design 部分要因试验设计

作业: 1) A plot of data from a time series, which shows a cyclical pattern – please show a time series plot and identify the length of the major cycle. 2) Data from a full factorial or fractional factorial experiment with at least 2 factors –…

如何在Go中编写防弹代码:不会失败的服务器工作流程

by Tal Kol通过塔尔科尔 如何在Go中编写防弹代码:不会失败的服务器工作流程 (How to write bulletproof code in Go: a workflow for servers that can’t fail) From time to time you may find yourself facing a daunting task: building a server that really …

越狱第一至五季/全集迅雷下载

越狱 第一季 Prison Break Season 1 (2005) 本季看点:迈克尔斯科菲尔德是一头陷于绝境欲拼死一搏的怒狮——他的哥哥林肯巴罗斯被认定犯有谋杀罪被投入了福克斯河监狱的死囚牢。虽然所有的证据都指出林肯就是凶手,迈克尔坚信兄长是无辜的。林肯的死刑执行…

leetcode面试题 16.19. 水域大小(深度优先搜索)

你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。 …

java -jar 默认参数_JAVA入门学习指南,建议收藏

如果你不懂Java 并且想认真学习接触了解一下Java的语法,建议把这篇文章收藏了,多看几遍,应该可以初步掌握Java 大部分基础的语法 。 让我们出发吧!ps:本文有点长,耐心阅读 。〇,编程环境工程项目推荐使用ID…

【RabbitMQ】 WorkQueues

消息分发 在【RabbitMQ】 HelloWorld中我们写了发送/接收消息的程序。这次我们将创建一个Work Queue用来在多个消费者之间分配耗时任务。 Work Queues(又称为:Task Queues)的主要思想是:尽可能的减少执行资源密集型任务时的等待时…

python matplotlib库安装出错_使用pip install Matplotlib时出现内存错误

我使用的是Python2.7,如果我试图安装Matplotlib,如果我使用“pip install Matplotlib”,就会出现这个错误Exception:Traceback (most recent call last):File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line …

笑看职场什么程序员才抢手,什么样的程序员涨薪多?

​程序员,怎么才算合格,不好说吧;他就像销售一样,一名销售员,比如网络销售卖茶叶,他卖茶叶很厉害呀,可是你让他去销售房地产,就算他有点销售的基础,也要重新去学怎么销售…