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 ...
最新文章
- 和12岁小同志搞创客开发:手撕代码,做一款亮度可调节灯
- c语言递归求差分方程,递归方程组解的渐进阶的求法——差分方程法
- 实战SSM_O2O商铺_06logback配置与使用
- 万字长文浅析SpringCould微服务负载均衡框架Ribbon源码(字多慎入)
- php 容器实现,PHP 依赖注入容器实现
- 来,拆一堆芯片看看!
- mysql查看session对应的ip_Mysql 查看session连接数,状态 | 学步园
- 深入理解Java虚拟机——类加载机制
- 程序员的进阶课-架构师之路(3)-线性表
- 分类数据显示功能_缓存优化
- d3 选择元素 api
- Kali Linux破解WiFi教程
- 5G时代的无线宽带新技术
- Ruby on rails Mac开发 入门笔记(一)
- python邮件模块_Python收发邮件模块,用,来,发送,接收
- 计算机兴趣小组活动教学教案,计算机兴趣小组计划教案.doc
- stdafx.h作用以及include中为何iostream必须放在stdafx.h之后?
- angularjs select 下拉加载option 默认选中第一行为空格的解决办法
- 银行卡收单之网络传输加密
- 移动开发即服务,腾讯云移动开发平台打造开发新模式
热门文章
- Swift设计模式: 观察者模式(发布-订阅模式)
- sds数据结构,Simple Dynamic String,简单动态字符串
- 360云盘会不会停止服务器,360云盘能否继续使用啊?
- 计算机插本2a院校,广东省专插本2A院校有哪些
- access怎么做批注_添加、编辑和删除记录的方法
- python编程符号大全_2020 年最值得学习的 5 大 AI 编程语言
- 2018_09_21_生活记录_参加人工智能大会
- Matrix Cookbook 公式推导
- linux6的关机快捷键是,LINUX关机快捷键是什么?
- jenkins + maven + nexus + [ svn 或 GitLab 或 GitHub ]