while @@fetch_status=0/*fetch_status : 0 successful 1: fail -2 :missing*/
It's ok!! thank you very much! but it have another error: Server: Msg 16930, Level 16, State 1, Line 17 The requested row is not in the fetch buffer. The statement has been terminated.
分析你的代码,你的程序可以不用游标,假设你的表中有一个关键字是按时间进行 如果没有,你可以用带自增长列的临时表序列化表结构为: 现金日报表(收入, 支出, 余额,发生时间)update 现金日报表 现金日报表.余额=a.余额 from 现金日报表 ,( select Count(a1.收入-a1.支出) "余额",a2.发生时间 from 现金日报表 a1,现金日报表a2 where a1.发生时间<=a2.发生时间 group by a2.发生时间 ) a where 现金日报表.发生时间=a.发生时间
1.不要用@COUNT做循环条件,改为用'WHILE @@FATCH_STATUS=0' 2.因为你用了SCROLL定义游标,默认的可更新选项无效,要在定义游标的最后加上FOR UPDATE选项来更新指定数据 3.还不行的话,把'WHERE CURRENT OF MY_CURR'改为 WHERE 收入=@INCOME AND 支出=@OUT AND 余额 =REMAINDER
该为while @count>=1试试
thank you very much!
but it have another error:
Server: Msg 16930, Level 16, State 1, Line 17
The requested row is not in the fetch buffer.
The statement has been terminated.
如果没有,你可以用带自增长列的临时表序列化表结构为: 现金日报表(收入, 支出, 余额,发生时间)update 现金日报表 现金日报表.余额=a.余额
from 现金日报表 ,(
select Count(a1.收入-a1.支出) "余额",a2.发生时间
from 现金日报表 a1,现金日报表a2
where a1.发生时间<=a2.发生时间
group by a2.发生时间
) a
where 现金日报表.发生时间=a.发生时间
2.因为你用了SCROLL定义游标,默认的可更新选项无效,要在定义游标的最后加上FOR UPDATE选项来更新指定数据
3.还不行的话,把'WHERE CURRENT OF MY_CURR'改为
WHERE 收入=@INCOME AND 支出=@OUT AND 余额 =REMAINDER
第一条也是起作用的,