700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql存储过程 cursor_MySql存储过程 CURSOR循环

mysql存储过程 cursor_MySql存储过程 CURSOR循环

时间:2018-08-27 22:11:52

相关推荐

mysql存储过程 cursor_MySql存储过程 CURSOR循环

游标

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。

使用步骤

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

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

获得下一行数据:FETCH 游标名称 into field_1, field_2;

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

释放游标:CLOSE 游标名称;

注:存储过程临时字段定义需要在游标定义之前。

示例:

delimiter ;;

drop procedure if exists `proc_test` ;;

CREATE PROCEDURE `proc_test`()

BEGIN

-- 定义变量

DECLARE done INT DEFAULT FALSE;

DECLARE field_1 VARCHAR(20);

DECLARE field_2 VARCHAR(20);-- 创建游标,并存储数据

DECLARE cur_list CURSOR FOR SELECT id, name FROM user;

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

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;

-- 打开游标

OPEN cur_list;

-- 执行循环

read_loop : LOOP

-- 取游标中的值

FETCH cur_list INTO field_1, field_2;

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

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

IF done THEN

LEAVE read_loop;

END IF;

-- 执行SQL操作

SET @sql_insert = CONCAT("insert into user_bak(id, name) VALUES ('", field_1, "','", field_2 ,"')");

PREPARE sqlli FROM @sql_insert;

EXECUTE sqlli;

COMMIT;

END LOOP read_loop;

-- 释放游标

CLOSE cur_list;

END

;;

delimiter;

mysql 存储过程 与 循环

mysql 操作同样有循环语句操作,三种标准循环模式:while, loop,repeat, 外加一种非标准循环:goto [在c或c#中貌似出现过类型循环但是一般不建议用!] 一般格式为:delim ...

mysql 存储过程、循环

CREATE PROCEDURE questionProc() BEGIN declare pgId ); declare pGuid varchar(); -- 定义游标卡尺 declare don ...

mysql存储过程双重循环示例

BEGIN ); DECLARE done INT DEFAULT FALSE; DECLARE cursor_rule CURSOR FOR SELECT s.id FROM d_menu_type ...

mysql存储过程之循环

链接: /rain1102/archive//05/16/350301.html

MySQL存储过程使用实例详解

本文介绍关于在MySQL存储过程游标使用实例,包括简单游标使用与游标循环跳出等方法 例1.一个简单存储过程游标实例 DROP PROCEDURE IF EXISTS getUserInfo $$CRE ...

MySql 存储过程 光标只循环一次

[1]MqSql 存储过程光标只循环一次 针对MySql存储过程,光标只循环一次就退出的场景,可能原因分析: (1)存储过程有问题(仔细检查语法.控制变量.条件等等) (2)保证存储过程正确.调用过 ...

MySQL存储过程中的3种循环【转载】

在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...

MySQL存储过程中的3种循环

在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...

MySQL 存储过程循环

MySQL 存储过程循环 MySQL循环语句(包括WHILE,REPEAT和LOOP)来根据条件反复运行代码块. MySQL提供循环语句,允许您根据条件重复执行一个SQL代码块. MySQL中有三个 ...

随机推荐

Blob 构造函数

Blob 构造函数使 Web 开发人员可直接在客户端上创建或操作 Blob(经常等效于一个文件). 该构造函数在 W3C 的文件 API 规范中进行定义,该规范目前尚处于工作草案阶段.在较早版本的文件 ...

AndroidHttp通信 HTTP Client与HttpURLConnection的区别

Apache HTTP Client DefaultHttpClient 以及其相关类AndroidHttpClient适用于 web browsers, 他们是可扩展的,并且拥有大量的稳定APIs ...

JS/jQ常用宽高及应用

关于js的宽高,随便一搜就是一大堆.这个一大堆对我来说可不是什么好事,看的头都大了.所以今天就总结了一些比较会常用的,并说明一下应用场景. 先来扯一下documentElement和body的微妙关系 ...

windows平台安装并使用MongoDB

下载并安装MongoDB,我的安装路径:D:\Program_Files\MongoDB 创建数据库目录,我的目录:D:\mongodb\data\db 命令行下运行MongoDB服务器: 在命令行窗 ...

《Ext JS 4.2 实战》可以买了

今天编辑告诉我,在网上可以买到这书了,购买链接是/Ext-JS-4-2%E5%AE%9E%E6%88%98-%E9%BB%84%E7%81%AF%E6%A1%A ...

spring-boot-2.0.3源码篇 - @Configuration、Condition与@Conditional

前言 开心一刻 一名劫匪慌忙中窜上了一辆车的后座,上车后发现主驾和副驾的一男一女疑惑地回头看着他,他立即拔出枪威胁到:“赶快开车,甩掉后面的警车,否则老子一枪崩了你!”,于是副驾上的男人转过脸对那女的 ...

Testlink1.9.17使用方法(第一章 前言)

第一章 前言 QQ交流群:585499566 一.Testlink主要功能: 测试项目管理 测试需求管理 测试用例管理 测试计划的制定 测试用例对测试需求的覆盖管理 测试用例的执行 大量测试数据的度量 ...

Inno Setup入门(九)——修改安装过程中的文字显示

前面说到过可以使用不用的语言文件实现不同的显示方式,方便与国际接轨,事实上即使没有语言文件也可以实现修改.[Messages]段用于定义安装程序和卸载程序中显示的消息.一般不需要创建[Messag ...

Css3帧动画深入探寻,讲点项目中实际会碰到的问题

先加个副标题XD --如何解决background-size为100%下处理@keyframes 正是在项目中遇到副标题,才引起我更深入的探寻 先略带一下基本的css3动画 css3的动画实现是通过属 ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。