使用游标(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循环更新相关推荐

  1. 创建存储过程向表中循环加入数据

    创建存储过程向表中循环加入数据 CREATE PROCEDURE dowhile() BEGIN  DECLARE n int; set n=1; WHILE n<=1000 do INSERT ...

  2. mysql创建存储过程及函数详解

    文章来源: 学习通http://www.bdgxy.com/ 目录 1. 存储过程 1.1. 基本语法 1.2 创建一个指定执行权限的存储过程 1.3?DELIMITER 的使用 2. 创建函数? 1 ...

  3. mysql怎么用游标修改数据_MySql使用游标Cursor循环(While)更新数据

    #要修改的变量 DECLARE var_ID VARCHAR(50) DEFAULT ''; #需要修改的数据的数量 DECLARE var_UpdateCount INT; #当前循环次数 DECL ...

  4. MySQL - 创建存储过程Procedure,Do While实现循环

    处理数据的时候,往往需要回溯历史,比如给用户分群后计算每个群体的用户数趋势,那么就需要计算截止到每一天的各个群体的用户数量,这个时候我们就需要创建存储过程,并且在存储过程中增加循环的功能,以此来实现上 ...

  5. mysql 创建存储过程语法_mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程 c ...

  6. MySQL——创建存储过程和函数

    简单地说,存储过程就是一条或多条  SQL  语句的集合,可视为批文件,但是其作用不仅限于批处理.存储程序可以分为存储过程和函数.存储过程要用 CALL  语句来调用,并且只能用输出变量返回值. 1. ...

  7. mysql创建存储过程权限问题

    首先,在mysql存储过程出现的同时,用户权限也增加了5种,其中和存储过程有关的权限有 三种: ALTER ROUTINE 编辑或删除存储过程 CREATE ROUTINE 建立存储过程 EXECUT ...

  8. MySQL创建存储过程(CREATE PROCEDURE)

    MySQL 存储过程是一些 SQL 语句的集合,比如有的时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程.下面 ...

  9. 2、MySQL创建存储过程(CREATE PROCEDURE)(函数)

    MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程. 编写存 ...

  10. mysql创建存储过程及遍历查询结果,mysql 用存储过程遍历结果集

    mysql 用存储过程遍历结果集 mysql (业务场景:取A表中数据插入B表中) 使用存储过程 以下面两步:sql --建立存储过程优化 DROP PROCEDURE IF EXISTS `proc ...

最新文章

  1. c语言翻译成php,C语言如何把它翻译成中文
  2. 黑马程序员___Java基础[02-Java基础语法](一)
  3. Gartner:2018年十大科技趋势与其对IT和执行的影响
  4. 【django】视图和URL
  5. callbackend entry point - iwfndcl_mgw_request_manager~read_entity
  6. shell 脚本编写使用
  7. 视觉SLAM——稀疏光流法
  8. 查询结果不跳转页面_商标检索查询的流程步骤是什么?
  9. linux下面修改默认的shell
  10. Pytorch Note19 优化算法5 Adadelta算法
  11. select的使用及缺陷
  12. 基于Linux通用GPIO接口的操作函数
  13. 【PMP】PMBOK 笔记 第12章 项目采购管理
  14. 6.3.1广度优先搜索
  15. Google镜像站点 资源收集
  16. PhotoShopCS6如何给透明图片填充背景
  17. 解决ListView显示不全、滑动冲突问题
  18. CS01/CS02/CS03 BOM修改 CSAP_MAT_BOM_MAINTAIN
  19. blinker 第三方库_blinker 库开发注意事项
  20. manjaro折腾手记

热门文章

  1. 算法:动态规划 最大连续子数组和 Maximum Subarray
  2. 极客大学架构师训练营 大数据平台、Sqoop、Canal、Flume、物联网平台 第27课 听课总结
  3. mysql自动跑sql发邮件_SQL server 表数据改变触发发送邮件的方法
  4. IGMC,Inductive graph-based matrix completion,基于归纳图的矩阵完成
  5. 递归计算二叉树的叶子节点个数
  6. 引用是变量的别名,不是常量的别名
  7. leetcode 859. Buddy Strings
  8. 最新基于高德地图的android进阶开发(1)获取 Map API Key
  9. php什么时候面向对象,php什么时候使用面向对象
  10. iic标准c语言,I2C总线之(三)---以C语言理解IIC