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 ...
随机推荐
- Linux-同步异步非阻塞阻塞的解析
一.理解同步.异步.阻塞.非阻塞 出场人物:老张,水壶两把(普通水壶,简称水壶:会响的水壶,简称响水壶). 1 老张把水壶放到火上,立等水开.(同步阻塞) 老张觉得自己有点傻. 2 老张把水壶放到火上 ...
- 关于$.ajax中data字段的整理--包括json转换和spring注解
1.前端$.ajax 的data为json提交的时候,后台方法中必须使用@RequestBody 注解 @RequestMapping(value = "getCpuData/{int ...
- prtg
prtg http://www.paessler.com/prtg/features prtg的sensor技术 数据库监视 Flexible Alerting 9 notification tech ...
- 在没有spineRunTime情况下手动使用spine数据
用spine做了一些简单UI动画,结果发现游戏用的cocos2dx版本太低了,无法集成spineRunTime,无奈只好把spine记下的关键帧数据抄到一个txt文件中,然后读取txt,再自己写代码播 ...
- N天前涨停过的票
zd(0,300,10)B2:=REF(C,1)*1.1-C;B3:BARSLAST(B2<0.01)=ZD01;{n天前涨停股票}
- Presto 来自Facebook的开源分布式查询引擎
Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速.实时的数据分析.它支持标准的ANSI SQL,包括复杂查询.聚合(aggregation).连接(join)和窗口函数(windo ...
- DW(六):polybase访问Azure Blob Storage
目录: 连接hadoop配置语法 配置hadoop连接 Pushdown配置 Create external tables for Azure blob storage 连接hadoop配置语法: g ...
- HTML页面上获取鼠标的位置(备忘)
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 剑指offer系列19--栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...
- 51nod 1314 定位系统
一个国家有N个城市(标号为0~N-1),这N个城市恰好由N-1条道路连接在一起(即N个城市正好构成一个树状结构).这个国家的所有道路的长度都是1个长度单位.定义:两个城市间的距离是两个城市间的最短路的 ...