Mysql创建存储过程,使用游标Cursor循环更新
使用游标(cursor)
1.声明游标
DECLARE cursor_name CURSOR FOR select_statement
这个语句声明一个游标。也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字。声明游标后也是单条操作的,但是不能用SELECT语句不能有INTO子句。
2. 游标OPEN语句
OPEN cursor_name
这个语句打开先前声明的游标。
3. 游标FETCH语句
FETCH cursor_name INTO var_name [, var_name] ...
这个语句用指定的打开游标读取下一行(如果有下一行的话),并且前进游标指针。
4. 游标CLOSE语句
CLOSE cursor_name
这个语句关闭先前打开的游标。
写之前查了好多资料但是总是执行不了,后来自琢磨了一下,写了个例子,经过测试完全正确。
下面是创建存储过程,使用游标循环更新操作的例子:
CREATE PROCEDURE `my`()
BEGIN/*局部变量的定义 declare*/declare aid bigint default 0 ;declare mdsl bigint default 0;declare stop int default 0;declare cur CURSOR FOR (select count(area_tb.id) as mdsl, area_tb.id as aid from area_tb right join subbranch_tb on subbranch_tb.i_subbran_area=area_tb.idwhere area_tb.i_record_status=0 and subbranch_tb.i_record_status=0 group by area_tb.id);declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop = null;/*开游标*/OPEN cur;/*游标向下走一步,将查询出来的两个值付给定义的两个变量*/FETCH cur INTO mdsl,aid;/* 循环体 这很明显 把游标查询出的 name 都加起并用 ; 号隔开 */WHILE ( stop is not null) DOupdate area_tb set i_subbran_count=mdsl where id = aid ;/*游标向下走一步*/FETCH cur INTO mdsl,aid;END WHILE;CLOSE cur;
END;
最后别忘了:给连接数据库的用户授予执行存储过程的权限
grant execute on procedure yunzuche.myupdate to '用户名'@'%';
Mysql创建存储过程,使用游标Cursor循环更新相关推荐
- 创建存储过程向表中循环加入数据
创建存储过程向表中循环加入数据 CREATE PROCEDURE dowhile() BEGIN DECLARE n int; set n=1; WHILE n<=1000 do INSERT ...
- mysql创建存储过程及函数详解
文章来源: 学习通http://www.bdgxy.com/ 目录 1. 存储过程 1.1. 基本语法 1.2 创建一个指定执行权限的存储过程 1.3?DELIMITER 的使用 2. 创建函数? 1 ...
- mysql怎么用游标修改数据_MySql使用游标Cursor循环(While)更新数据
#要修改的变量 DECLARE var_ID VARCHAR(50) DEFAULT ''; #需要修改的数据的数量 DECLARE var_UpdateCount INT; #当前循环次数 DECL ...
- MySQL - 创建存储过程Procedure,Do While实现循环
处理数据的时候,往往需要回溯历史,比如给用户分群后计算每个群体的用户数趋势,那么就需要计算截止到每一天的各个群体的用户数量,这个时候我们就需要创建存储过程,并且在存储过程中增加循环的功能,以此来实现上 ...
- mysql 创建存储过程语法_mysql存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程 c ...
- MySQL——创建存储过程和函数
简单地说,存储过程就是一条或多条 SQL 语句的集合,可视为批文件,但是其作用不仅限于批处理.存储程序可以分为存储过程和函数.存储过程要用 CALL 语句来调用,并且只能用输出变量返回值. 1. ...
- mysql创建存储过程权限问题
首先,在mysql存储过程出现的同时,用户权限也增加了5种,其中和存储过程有关的权限有 三种: ALTER ROUTINE 编辑或删除存储过程 CREATE ROUTINE 建立存储过程 EXECUT ...
- MySQL创建存储过程(CREATE PROCEDURE)
MySQL 存储过程是一些 SQL 语句的集合,比如有的时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程.下面 ...
- 2、MySQL创建存储过程(CREATE PROCEDURE)(函数)
MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程. 编写存 ...
- mysql创建存储过程及遍历查询结果,mysql 用存储过程遍历结果集
mysql 用存储过程遍历结果集 mysql (业务场景:取A表中数据插入B表中) 使用存储过程 以下面两步:sql --建立存储过程优化 DROP PROCEDURE IF EXISTS `proc ...
最新文章
- c语言翻译成php,C语言如何把它翻译成中文
- 黑马程序员___Java基础[02-Java基础语法](一)
- Gartner:2018年十大科技趋势与其对IT和执行的影响
- 【django】视图和URL
- callbackend entry point - iwfndcl_mgw_request_manager~read_entity
- shell 脚本编写使用
- 视觉SLAM——稀疏光流法
- 查询结果不跳转页面_商标检索查询的流程步骤是什么?
- linux下面修改默认的shell
- Pytorch Note19 优化算法5 Adadelta算法
- select的使用及缺陷
- 基于Linux通用GPIO接口的操作函数
- 【PMP】PMBOK 笔记 第12章 项目采购管理
- 6.3.1广度优先搜索
- Google镜像站点 资源收集
- PhotoShopCS6如何给透明图片填充背景
- 解决ListView显示不全、滑动冲突问题
- CS01/CS02/CS03 BOM修改 CSAP_MAT_BOM_MAINTAIN
- blinker 第三方库_blinker 库开发注意事项
- manjaro折腾手记
热门文章
- 算法:动态规划 最大连续子数组和 Maximum Subarray
- 极客大学架构师训练营 大数据平台、Sqoop、Canal、Flume、物联网平台 第27课 听课总结
- mysql自动跑sql发邮件_SQL server 表数据改变触发发送邮件的方法
- IGMC,Inductive graph-based matrix completion,基于归纳图的矩阵完成
- 递归计算二叉树的叶子节点个数
- 引用是变量的别名,不是常量的别名
- leetcode 859. Buddy Strings
- 最新基于高德地图的android进阶开发(1)获取 Map API Key
- php什么时候面向对象,php什么时候使用面向对象
- iic标准c语言,I2C总线之(三)---以C语言理解IIC