mysql存储过程中,loop……end loop后用select 列明,无法显示数据,结果显示no data to fetch,为什么?

[复制链接]
查看11 | 回复6 | 2011-10-31 03:45:51 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-10-31 03:45:51 | 显示全部楼层
要做异常捕捉DECLARECONTINUEHANDLERFORSQLSTATE\'02000\'SETdone=1;实例如下:CREATEPROCEDUREcurdemo()BEGINDECLAREdoneINTDEFAULT0;DECLAREaCHAR(16);DECLAREb,cINT;DECLAREcur1CURSORFORSELECTid,dataFROMtest.t1;DECLAREcur2CURSORFORSELECTiFROMtest.t2;DECLARECONTINUEHANDLERFORSQLSTATE\'02000\'SETdone=1;OPENcur1;OPENcur2;REPEATFETCHcur1INTOa,b;FETCHcur2INTOc;IFNOTdoneTHENIFbcTHENINSERTINTOtest.t3VALUES(a,b);ELSEINSERTINTOtest.t3VALUES(a,c);ENDIF;ENDIF;UNTILdoneENDREPEAT;CLOSEcur1;CLOSEcur2;END追问麻烦看下我的问题补充,在endloop之前都可以输出数据的,在endloop后,无论什么数据都找不到,显示nodatatofetch。
回复

使用道具 举报

千问 | 2011-10-31 03:45:51 | 显示全部楼层
你那个报错是游标的游标fetch不到数据,你怎么处理?你定义了么?你跳出loop的条件是游标取不到数据。
回复

使用道具 举报

千问 | 2011-10-31 03:45:51 | 显示全部楼层
我把游标取的值赋值给变量了,然后我在loop结束后,将计算后的sum结果插入另一张表。
回复

使用道具 举报

千问 | 2011-10-31 03:45:51 | 显示全部楼层
你没有做游标fetch不到数据的处理啊FETCHc_testINTOid,name,num1,num2;你这里fetchc_test如果没有数据,你知道会怎么处理么?你加上DECLARECONTINUEHANDLERFORNOTFOUND这样的处理语句就好了啊懂了么!不是说你这个sql有问题!
回复

使用道具 举报

千问 | 2011-10-31 03:45:51 | 显示全部楼层
你没有做游标fetch不到数据的处理啊FETCHc_testINTOid,name,num1,num2;你这里fetchc_test如果没有数据,你知道会怎么处理么?你加上DECLARECONTINUEHANDLERFORNOTFOUND这样的处理语句就好了啊懂了么!不是说你这个sql有问题!
回复

使用道具 举报

千问 | 2011-10-31 03:45:51 | 显示全部楼层
用游标追问是用游标啊,在loop中用游标迭代出记录,然后在endloop后select一个变量,无论什么变量都显示nodatatofetch。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行