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 ...
随机推荐
- springVS javaee
https://stackoverflow.com/questions/4490682/difference-between-java-ee-and-spring-framework https:// ...
- 怎么用ABBYY将PDF转换为JPEG图像
FineReader Mac版,全称ABBYY FineReader Pro for Mac,是一款流行的OCR图文识别软件,可快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索 ...
- SQL2005:使用varchar(max)代替text
SQL Server 2005 联机丛书 中文相关说明 1.在 Microsoft SQL Server 的未来版本中将删除 ntext.text 和 image 数据类型.请避免在新开发工作中使用这 ...
- SVG ViewBox
如果svg图形太大或者太小,就可以用ViewBox属性来调整在页面中的显示范围.大小. "像素不能直接换算成英寸.厘米,要在 dpi ( dot per inch 分辨率,概念较多,鼠标 d ...
- SQL : 在SQL Server 2008(Or Express)中如何Open并编辑数据表【转】
来源:http://www.cnblogs.com/wsdj-ITtech/archive/2011/04/28/2031601.html 通常在SQL Server 2005中,我们可以通过SQL ...
- net上传图片重命名
string FileName = File.FileName;//获取上传文件的名称 string Str = FileName.Split('.')[1];//获取上传文件的后缀 string N ...
- C语言qsort函数用法
qsort函数简介 排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等. 看名字都知道快速排序是目前公认的一种比较好的排序算法.因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用. ...
- oracle 行转列的例子
with test as(select '1' bit from dual union select '0' from dual )select replace(sys_connect_by_path ...
- MYSQL 分组排名
今天遇到一个MYSQL排序的问题,要求按某列进行分组,组内进行排序. 百度一下发现MYSQL不支持row_number(),rank()等函数. 采用的办法如下,我们首先创建一个测试表: --创建表 ...
- eclipse打包jar文件(含外部jar包)的方法
在项目发布前,使用eclipse导出普通的jar包时,如果配置不好,在运行命令Java -jar /test.jar 时可能会出现如下三类错误信息: 1.no main manifest attrib ...