mysql中游标的使用
BEGIN
#遍历占领野地表还原军队
#update armforce set number=num where troopsid=(select id from troops where isfrist=1 and cityid=cityid)
DECLARE tId DECIMAL(21,0) default -1;#occupyWild表的TroopsId
DECLARE cid DECIMAL(21,0) default -1;#occupyWild表的CityId
DECLARE temp_tId DECIMAL(21,0) default -1;#occupyWild表的TroopsId
DECLARE temp_cid DECIMAL(21,0) default -1;#occupyWild表的CityId
DECLARE tId2 DECIMAL(21,0) default -1;#troops表的TroopsId
DECLARE num0 int default 0;
DECLARE num1 int default 0;
DECLARE num2 int default 0;
DECLARE num3 int default 0;
DECLARE curl CURSOR FOR SELECT TroopsId,CityId FROM occupyWild order by TroopsId ASC;
DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET tId = -1;
OPEN curl;
FETCH curl INTO tId,cid;
WHILE(tId<>-1) DO
#说明:游标变量使用一次以后就会被清除
#************************ 逻辑 START ************************
set tId2=-1,temp_tId=-1,temp_cid=-1,num0=0,num1=0,num2=0,num3=0;
set temp_tId=tId;
set temp_cid=cid;
select id into tId2 from Troops where isFrist=1 and CityId=temp_cid limit 1;#正常情况下只有一条数据
select number into num0 from Armforce where TroopsId=temp_tId and ArmType=0;
select number into num1 from Armforce where TroopsId=temp_tId and ArmType=1;
select number into num2 from Armforce where TroopsId=temp_tId and ArmType=2;
select number into num3 from Armforce where TroopsId=temp_tId and ArmType=3;
update Armforce set Number=Number+num0 where TroopsId=tId2 and ArmType=0;#退回军队
delete from Armforce where TroopsId=temp_tId and ArmType=0;#删除军队
update Armforce set Number=Number+num1 where TroopsId=tId2 and ArmType=1;
delete from Armforce where TroopsId=temp_tId and ArmType=1;
update Armforce set Number=Number+num2 where TroopsId=tId2 and ArmType=2;
delete from Armforce where TroopsId=temp_tId and ArmType=2;
update Armforce set Number=Number+num3 where TroopsId=tId2 and ArmType=3;
delete from Armforce where TroopsId=temp_tId and ArmType=3; #************************ 逻辑 END ************************ FETCH curl into tId,cid;
END WHILE;
CLOSE curl; END
mysql中游标的使用的更多相关文章
- mysql中游标的使用案例详解(学习笔记)
1.游标是啥玩意?简单的说:游标(cursor)就是游动的标识,啥意思呢,通俗的这么说,一条sql取出对应n条结果资源的接口/句柄,就是游标,沿着游标可以一次取出一行.我给大家准备一张图: 2.怎么使 ...
- mysql中游标的使用案例详解(学习笔记)(转)
1.游标是啥玩意?简单的说:游标(cursor)就是游动的标识,啥意思呢,通俗的这么说,一条sql取出对应n条结果资源的接口/句柄,就是游标,沿着游标可以一次取出一行.我给大家准备一张图: 2.怎么使 ...
- Oracle存储过程中游标的简单使用
存储过程中查询语句如何返回多行结果? 我们知道,如果存储过程中查询语句有多行结果输出,会报错:ORA-01422: exact fetch returns more than requested nu ...
- MySQL/MariaDB中游标的使用
本文目录:1.游标说明2.使用游标3.游标使用示例 1.游标说明 游标,有些地方也称为光标.它的作用是在一个结果集中逐条逐条地获取记录行并操作它们. 例如: 其中select是游标所操作的结果集,游标 ...
- SQL Server中游标的使用
举个栗子: -- 临时变量 DECLARE @Id UNIQUEIDENTIFIER -- 声明游标名 DECLARE cursor_name CURSOR FOR SELECT ID from CO ...
- SQL中游标的使用
一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言,如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则需要使用到游标或WHILE等循环 游标的类型: 1.静态游标(不检测 ...
- plsql编程中游标的使用
游标(Cursor):用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上作操作. oracle中显示使用游标一般要包含以下5个步骤: 声明一些变量以便存储从游 ...
- SQL中游标的使用--遍历数据逐行更新或删除:相当于for循环
--------------------------------------例子1 单纯的游标-------------------------------- create TABLE Table1 ...
- SQL中游标的用法
游标:是用来对表从上下每行循环取值,将值连接成为字符串.例子:对 pubs 数据库的dbo.titles 表.1.取得表中的总价格:select sum(price) from dbo.titles2 ...
随机推荐
- vim配置及插件安装管理(超级详细)[转]
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...
- Measuring the amount of writes in InnoDB redo logs
Choosing a good InnoDB log file size is key to InnoDB write performance. This can be done by measuri ...
- LINQ(LINQ to DataSet)
http://www.cnblogs.com/SkySoot/archive/2012/08/21/2649471.html DataTable.Select()方法使用和 SQL 相似的过滤语法从 ...
- Xcode 7 ImageNamed 方法加载jpg图片失败
更新XCode7后 原来的Image.xcassets文件夹变成了Assets.xcassets 把01.jpg,02.jpg,03.png拖入这个文件夹中 UIImage* test1=[UIIma ...
- sql server 排序规则
/* 排序规则根据特定语言和区域设置的标准指定对 字符串 数据 进行排序和比较的规则. 以 ORDER BY 子句为例:如果按升序排列,说英语的人认为字符串 Chiapas 应排在 Col ...
- asp.net系统过滤器、自定义过滤器
原文地址:http://www.cnblogs.com/kissdodog/archive/2013/05/21/3090513.html 一.系统过滤器使用说明 1.OutputCache过滤器 O ...
- ASP.NET MVC中的拦截器
在ASP.NET MVC中,有三种拦截器:Action拦截器.Result拦截器和Exception拦截器, 所谓的拦截器也没有什么的,只是写一个类,继承另一个类和一个接口,顺便实现接口里面的方法而以 ...
- sqlserver模糊查询【转】
http://blog.csdn.net/liuxinxin1125/article/details/5444873 SELECT * FROM user WHERE name LIKE ';%三%' ...
- js键盘事件兼容浏览器
document.onkeydown=function(event){ var e = event || window.event || arguments.callee.caller.argumen ...
- Maven最佳实践:版本管理
什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基本用 ...