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 ...
随机推荐
- 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交
http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要 ...
- linux包之procps之ps与top
概述 阅读man ps页,与man top页,最权威与标准,也清楚 有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行.由于一个应用程序可能需要启动多个进程.所以在同等情况 ...
- python数据类型之 set
set是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object set(iterabl ...
- 使用Axure制作App原型应该怎样设置尺寸?
使用Axure制作的原型,如果你没有设置自适应视图的话它是不会自动适应任何设备的. 若要解释清楚这个问题需要的篇幅比较长,请大家自行参考 Point/Pixel/PPI/DPI 的意思和它们之间的关系 ...
- 【性能诊断】十、性能问题综合分析(案例1,windbg、Network Monitor)
[问题描述]: 产品中某业务功能A,在进行"刷新"->选择制单->新增->切换其他行等一系列操作后,突然发生客户端不响应的现象. 经反复测 ...
- C# ASP.NET基类,常用类库及源代码
http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm
- FastJson的基本用法----转
1. [文件] User.java ~ 243B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class User{ private int id; ...
- hadoop(三):hdfs 机架感知
client 向 Active NN 发送写请求时,NN为这些数据分配DN地址,HDFS文件块副本的放置对于系统整体的可靠性和性能有关键性影响.一个简单但非优化的副本放置策略是,把副本分别放在不同机架 ...
- 【jmeter】WebSerivice测试
WebSerivice测试计划的取样器有两种方式:HTTP请求.SOAP/XML-RPC Request. 1. 测试计划 启动JMeter,点击测试计划节点上,重命名测试计划:WebserviceT ...
- nova分析(10)—— nova-rootwrap
一.nova-rootwrap的作用 部署玩过openstack的都应该知道,它会生成一个nova用户来管理所有服务.nova身份在linux中属于普通用户级别,避免了一些需要root身份运行的操作, ...