使用游标(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. 和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯
  2. c语言递归求差分方程,递归方程组解的渐进阶的求法——差分方程法
  3. 实战SSM_O2O商铺_06logback配置与使用
  4. 万字长文浅析SpringCould微服务负载均衡框架Ribbon源码(字多慎入)
  5. php 容器实现,PHP 依赖注入容器实现
  6. 来,拆一堆芯片看看!
  7. mysql查看session对应的ip_Mysql 查看session连接数,状态 | 学步园
  8. 深入理解Java虚拟机——类加载机制
  9. 程序员的进阶课-架构师之路(3)-线性表
  10. 分类数据显示功能_缓存优化
  11. d3 选择元素 api
  12. Kali Linux破解WiFi教程
  13. 5G时代的无线宽带新技术
  14. Ruby on rails Mac开发 入门笔记(一)
  15. python邮件模块_Python收发邮件模块,用,来,发送,接收
  16. 计算机兴趣小组活动教学教案,计算机兴趣小组计划教案.doc
  17. stdafx.h作用以及include中为何iostream必须放在stdafx.h之后?
  18. angularjs select 下拉加载option 默认选中第一行为空格的解决办法
  19. 银行卡收单之网络传输加密
  20. 移动开发即服务,腾讯云移动开发平台打造开发新模式

热门文章

  1. Swift设计模式: 观察者模式(发布-订阅模式)
  2. sds数据结构,Simple Dynamic String,简单动态字符串
  3. 360云盘会不会停止服务器,360云盘能否继续使用啊?
  4. 计算机插本2a院校,广东省专插本2A院校有哪些
  5. access怎么做批注_添加、编辑和删除记录的方法
  6. python编程符号大全_2020 年最值得学习的 5 大 AI 编程语言
  7. 2018_09_21_生活记录_参加人工智能大会
  8. Matrix Cookbook 公式推导
  9. linux6的关机快捷键是,LINUX关机快捷键是什么?
  10. jenkins + maven + nexus + [ svn 或 GitLab 或 GitHub ]