有表TB_1,字段名为:FID,FNum,Flag,
我想对表中的数据进行游标循环,分别取出几组满足字段FNum之和 > 24.5 AND <= 25.5 的数据。
如果后面一组不在这个范围的话也显示一组出来,并且停止循环。
OPEN V_CUR FOR 'SELECT FID,NVL(FNum,0) FROM TB_1 WHERE NVL(FALG,0) = 0 ' ;
FETCH V_CUR INTO V_ID,V_NUM
WHILE V_CUR%FOUND LOOP
TEMPNUM:= TEMPNUM + V_NUM;
IF TEMPNUM <= 25.5 THEN
UPDATE TB_1 A SET A.FLAG = V_FLAG WHERE FID = V_ID;
ELSE
TEMPNUM:= TEMPNUM - V_NUM;
END IF;
IF TEMPNUM > 24.5 AND TEMPNUM <= 25.5 THEN
--满足这个条件就是一组,并把标示V_FLAG加1
V_FLAG:= V_FLAG + 1;
TEMPNUM:=0;
--在这个应该怎么写,让其游标再次从第一条开始循环呢。当然应该排除字段FALG不等于0的数据了。
END IF;
FETCH V_CUR INTO V_ID,V_NUM
END LOOP;
这是我的思路,如果有其他更好办法,请赐教。
我想对表中的数据进行游标循环,分别取出几组满足字段FNum之和 > 24.5 AND <= 25.5 的数据。
如果后面一组不在这个范围的话也显示一组出来,并且停止循环。
OPEN V_CUR FOR 'SELECT FID,NVL(FNum,0) FROM TB_1 WHERE NVL(FALG,0) = 0 ' ;
FETCH V_CUR INTO V_ID,V_NUM
WHILE V_CUR%FOUND LOOP
TEMPNUM:= TEMPNUM + V_NUM;
IF TEMPNUM <= 25.5 THEN
UPDATE TB_1 A SET A.FLAG = V_FLAG WHERE FID = V_ID;
ELSE
TEMPNUM:= TEMPNUM - V_NUM;
END IF;
IF TEMPNUM > 24.5 AND TEMPNUM <= 25.5 THEN
--满足这个条件就是一组,并把标示V_FLAG加1
V_FLAG:= V_FLAG + 1;
TEMPNUM:=0;
--在这个应该怎么写,让其游标再次从第一条开始循环呢。当然应该排除字段FALG不等于0的数据了。
END IF;
FETCH V_CUR INTO V_ID,V_NUM
END LOOP;
这是我的思路,如果有其他更好办法,请赐教。
go to label;
不用重新打开游标
《标志>>
OPEN V_CUR FOR 'SELECT FID,NVL(FNum,0) FROM TB_1 WHERE NVL(FALG,0) = 0 ' ;
............
................
IF TEMPNUM > 24.5 AND TEMPNUM <= 25.5 THEN
--满足这个条件就是一组,并把标示V_FLAG加1
V_FLAG:= V_FLAG + 1;
TEMPNUM:=0;
go to <<标志>> 必须重新打开游标,因为你更新了flag,所以必须重新选择的
END IF; 大体思路就这个,或许不需要for,但肯定想办法 必须重新查表的