mysql存储过程游标 使用游标时报错,不明白是什么原因

游标无效的错误是怎么回事_百度知道
游标无效的错误是怎么回事
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
如果是Access,就换MySQL MSQL吧,
Access很多功能不全。无效游标是你使用了空行值。
为您推荐:
其他类似问题
游标的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。mysql游标定义报错!!!
[问题点数:40分,结帖人lifang123456]
本版专家分:10
结帖率 100%
CSDN今日推荐
本版专家分:239919
2008年8月 其他数据库开发大版内专家分月排行榜第一2008年7月 其他数据库开发大版内专家分月排行榜第一2007年7月 其他数据库开发大版内专家分月排行榜第一2007年6月 其他数据库开发大版内专家分月排行榜第一2006年12月 其他数据库开发大版内专家分月排行榜第一2006年11月 其他数据库开发大版内专家分月排行榜第一2006年9月 其他数据库开发大版内专家分月排行榜第一2006年5月 其他数据库开发大版内专家分月排行榜第一2005年12月 其他数据库开发大版内专家分月排行榜第一
2015年6月 其他数据库开发大版内专家分月排行榜第二2015年5月 其他数据库开发大版内专家分月排行榜第二2013年6月 其他数据库开发大版内专家分月排行榜第二2013年3月 其他数据库开发大版内专家分月排行榜第二2012年12月 其他数据库开发大版内专家分月排行榜第二2012年10月 其他数据库开发大版内专家分月排行榜第二2012年9月 其他数据库开发大版内专家分月排行榜第二2012年7月 其他数据库开发大版内专家分月排行榜第二2012年6月 其他数据库开发大版内专家分月排行榜第二2011年11月 其他数据库开发大版内专家分月排行榜第二2011年10月 其他数据库开发大版内专家分月排行榜第二2011年9月 其他数据库开发大版内专家分月排行榜第二2011年6月 其他数据库开发大版内专家分月排行榜第二2011年5月 其他数据库开发大版内专家分月排行榜第二2011年4月 其他数据库开发大版内专家分月排行榜第二2011年3月 其他数据库开发大版内专家分月排行榜第二2011年2月 其他数据库开发大版内专家分月排行榜第二2010年12月 其他数据库开发大版内专家分月排行榜第二2010年11月 其他数据库开发大版内专家分月排行榜第二2010年9月 其他数据库开发大版内专家分月排行榜第二2010年7月 其他数据库开发大版内专家分月排行榜第二2010年4月 其他数据库开发大版内专家分月排行榜第二2010年3月 其他数据库开发大版内专家分月排行榜第二2010年1月 其他数据库开发大版内专家分月排行榜第二2009年12月 其他数据库开发大版内专家分月排行榜第二2008年6月 其他数据库开发大版内专家分月排行榜第二2008年5月 其他数据库开发大版内专家分月排行榜第二2008年4月 其他数据库开发大版内专家分月排行榜第二2007年5月 其他数据库开发大版内专家分月排行榜第二2007年1月 其他数据库开发大版内专家分月排行榜第二2006年10月 其他数据库开发大版内专家分月排行榜第二2006年8月 其他数据库开发大版内专家分月排行榜第二2006年6月 其他数据库开发大版内专家分月排行榜第二2006年4月 其他数据库开发大版内专家分月排行榜第二2005年9月 其他数据库开发大版内专家分月排行榜第二
2013年12月 其他数据库开发大版内专家分月排行榜第三2013年5月 其他数据库开发大版内专家分月排行榜第三2013年4月 其他数据库开发大版内专家分月排行榜第三2013年2月 其他数据库开发大版内专家分月排行榜第三2013年1月 其他数据库开发大版内专家分月排行榜第三2012年5月 其他数据库开发大版内专家分月排行榜第三2012年4月 其他数据库开发大版内专家分月排行榜第三2012年3月 其他数据库开发大版内专家分月排行榜第三2012年2月 其他数据库开发大版内专家分月排行榜第三2011年8月 其他数据库开发大版内专家分月排行榜第三2011年7月 其他数据库开发大版内专家分月排行榜第三2010年10月 其他数据库开发大版内专家分月排行榜第三2010年5月 其他数据库开发大版内专家分月排行榜第三2010年2月 其他数据库开发大版内专家分月排行榜第三2009年11月 其他数据库开发大版内专家分月排行榜第三2009年10月 其他数据库开发大版内专家分月排行榜第三2009年5月 其他数据库开发大版内专家分月排行榜第三2009年4月 其他数据库开发大版内专家分月排行榜第三2008年12月 其他数据库开发大版内专家分月排行榜第三2008年11月 其他数据库开发大版内专家分月排行榜第三2008年10月 其他数据库开发大版内专家分月排行榜第三2008年9月 其他数据库开发大版内专家分月排行榜第三2007年9月 其他数据库开发大版内专家分月排行榜第三2007年8月 其他数据库开发大版内专家分月排行榜第三2007年4月 其他数据库开发大版内专家分月排行榜第三2007年3月 其他数据库开发大版内专家分月排行榜第三2007年2月 其他数据库开发大版内专家分月排行榜第三2006年7月 其他数据库开发大版内专家分月排行榜第三2006年2月 其他数据库开发大版内专家分月排行榜第三2006年1月 其他数据库开发大版内专家分月排行榜第三2005年11月 其他数据库开发大版内专家分月排行榜第三2005年10月 其他数据库开发大版内专家分月排行榜第三
本版专家分:10
本版专家分:10
本版专家分:175059
2008年12月 其他数据库开发大版内专家分月排行榜第一2008年9月 其他数据库开发大版内专家分月排行榜第一
2014年7月 其他数据库开发大版内专家分月排行榜第二2014年3月 其他数据库开发大版内专家分月排行榜第二2013年7月 其他数据库开发大版内专家分月排行榜第二2013年4月 其他数据库开发大版内专家分月排行榜第二2012年3月 其他数据库开发大版内专家分月排行榜第二2011年8月 其他数据库开发大版内专家分月排行榜第二2011年7月 其他数据库开发大版内专家分月排行榜第二2009年11月 其他数据库开发大版内专家分月排行榜第二2009年7月 其他数据库开发大版内专家分月排行榜第二2009年6月 其他数据库开发大版内专家分月排行榜第二2009年5月 其他数据库开发大版内专家分月排行榜第二2009年4月 其他数据库开发大版内专家分月排行榜第二2009年3月 其他数据库开发大版内专家分月排行榜第二2009年1月 其他数据库开发大版内专家分月排行榜第二2008年10月 其他数据库开发大版内专家分月排行榜第二2008年8月 其他数据库开发大版内专家分月排行榜第二2003年9月 Delphi大版内专家分月排行榜第二
2014年4月 其他数据库开发大版内专家分月排行榜第三2013年10月 其他数据库开发大版内专家分月排行榜第三2013年9月 其他数据库开发大版内专家分月排行榜第三2013年6月 其他数据库开发大版内专家分月排行榜第三2012年12月 其他数据库开发大版内专家分月排行榜第三2012年11月 其他数据库开发大版内专家分月排行榜第三2012年10月 其他数据库开发大版内专家分月排行榜第三2012年9月 其他数据库开发大版内专家分月排行榜第三2012年1月 其他数据库开发大版内专家分月排行榜第三2011年11月 其他数据库开发大版内专家分月排行榜第三2011年9月 其他数据库开发大版内专家分月排行榜第三2011年6月 其他数据库开发大版内专家分月排行榜第三2011年5月 其他数据库开发大版内专家分月排行榜第三2011年4月 其他数据库开发大版内专家分月排行榜第三2011年3月 其他数据库开发大版内专家分月排行榜第三2010年11月 其他数据库开发大版内专家分月排行榜第三2010年4月 其他数据库开发大版内专家分月排行榜第三2010年1月 其他数据库开发大版内专家分月排行榜第三2009年12月 其他数据库开发大版内专家分月排行榜第三2009年2月 其他数据库开发大版内专家分月排行榜第三2008年7月 其他数据库开发大版内专家分月排行榜第三2008年6月 其他数据库开发大版内专家分月排行榜第三2008年1月 其他数据库开发大版内专家分月排行榜第三2007年12月 其他数据库开发大版内专家分月排行榜第三2003年12月 Delphi大版内专家分月排行榜第三2003年10月 Delphi大版内专家分月排行榜第三
本版专家分:470998
2012年 荣获名人称号
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第十2011年 总版技术专家分年内排行榜第七
本版专家分:10
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐3.6k 次阅读
MySQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行(零行或多行)。使用简单的SELECT语句,例如,没有办法得到第一行、下一行或前10行,也不存在每次一行地处理所有行的简单方法(相对于成批地处理它们)。
有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。
游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。
创建一个简单的游标
create procedure simplecursor()
declare youbiaoName cursor
open youbiaoN
-- 打开游标
-- //some code
close youbiaoN -- 关闭游标,释放游标使用的所有内部内存和资源
定义了一个游标,使用declare 游标名 cursor for 来定义游标,该处查询用户表里的用户名, 存储过程处理完成后,游标就消失(因为它局限于存储过程),并没有任何返回和输出。
create procedure simplecursor2()
-- 定义局部变量
declare youbiao2 cursor for s -- 定义游标
open youbiao2;
fetch youbiao2
close youbiao2;
该过程定义一个局部变量和游标, 该游标返回了用户表得所用用户名组成的集合,即如下所示
然后在游标开启-关闭内, 用fetch遍历每一行, 把得到的数据(即name的值) into
给局部变量tmp。此处只完成了这个流程, 什么都没做。注: 该fetch并没有结束标志, 调用时会一直遍历下去, 当遍历完最后一行再继续遍历时,会出现错误,[Err] 1366 - Incorrect integer value:
create procedure simplecursor3()
declare done boolean default 0; -- 定义一个循环标记默认值为false
-- 定义局部变量
declare youbiao3 cursor for s -- 定义游标
-- 当出现02000错误时把局部变量的值设为true
declare continue handler for sqlstate '02000' set done 1;
open youbiao3;
fetch youbiao3
until done end REPEAT;
-- 当done为true时结束repeat,
close youbiao3;
与前一个例子一样,这个例子使用FETCH检索当前name到声明的名为tmp的变量中。但与前一个例子不一样的是,这个例子中的FETCH是在REPEAT内,因此它反复执行直到done为真(由UNTIL done END REPEAT;规定)。为使它起作用,用一个DEFAULT 0(假,不结束)定义变量done。那么,done怎样才能在结束时被设置为真呢?答案是用以下语句:
declare continue handler for sqlstate '02000' set done 1;
这条语句定义了一个CONTINUE HANDLER,它是在条件出现时被执行的代码。这里,它指出当SQLSTATE '02000'出现时,SET done=1。SQLSTATE '02000'是一个未找到条件,当REPEAT由于没有更多的行供循环而不能继续时,出现这个条件。
复杂一点的游标使用:创建一个新的表, 把用户和该用户的所有订单金额存入该表。
create procedure myyoubiao ()
declare done boolean default 0; --循环标记
-- 临时存储变量
declare t DECIMAL(8,2); -- 同上
declare myyoubiao4 CURSOR for
declare continue handler for sqlstate '02000' set done = 1;
create table if not exists mytable -- 表不存在是创建, 存在时跳过
(uId int, total decimal(8,2));
open myyoubiao4;
fetch myyoubiao4
call getTotalByUser2(tmp, 1, t); -- 根据用户id获取该用户总订单金额, 含税
insert into mytable(uId,total) values(tmp,t); --插入新表
UNTIL done end REPEAT;
CLOSE myyoubiao4;
调用该过程时, 会自动创建一张包含用户id和用户订单总额的表(若不存在), 再把遍历每一个用户, 通过创建的过程返回用户的订单总额,插入新创建的表中。
1 收藏&&|&&5
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。mysql 事务和游标共同使用报错???
[问题点数:20分,结帖人maskice]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:470998
2012年 荣获名人称号
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第十2011年 总版技术专家分年内排行榜第七
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐mysql存储过程中声明游标时可以使用变量吗_百度知道
mysql存储过程中声明游标时可以使用变量吗
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
mysql存储过程中声明游标时可以使用变量吗(1)CONCAT()//字符连接(2)CONCAT_WS()//使用指定的分隔符进行字符连接(3)FORMAT()//数字格式化(4)LOWER()//转化小写(5)UPPER()//转换大写(6)LEFT()//获取左侧字符(7)RIGHT()//获取右侧字符(8)LENGTH()//取得字符串长度(9)LTRIM(),RTRIM(),TRIM()//删除前导、后续空格或者指定字符
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 mysql游标 的文章

 

随机推荐