如下语句只能执行一次:
use js_amisdeclare @acc_code char(7)
declare @moneyin_dur smallint
print '---'
declare cur_1 cursor for
select distinct acc_code,moneyin_dur from acc_comm_rate
open cur_1
while (1=1)
begin
print @@fetch_status
if @@fetch_status <> 0 break
fetch cur_1 into @acc_code,@moneyin_dur
print '111'
end
print '-----'
close cur_1
deallocate cur_1第二次执行时显示@@ftech_status 为 -1 我已将其关闭了,我以前其它的语句也是这样写的可以重复执行。
请高人指点一二。万分感谢。
use js_amisdeclare @acc_code char(7)
declare @moneyin_dur smallint
print '---'
declare cur_1 cursor for
select distinct acc_code,moneyin_dur from acc_comm_rate
open cur_1
while (1=1)
begin
print @@fetch_status
if @@fetch_status <> 0 break
fetch cur_1 into @acc_code,@moneyin_dur
print '111'
end
print '-----'
close cur_1
deallocate cur_1第二次执行时显示@@ftech_status 为 -1 我已将其关闭了,我以前其它的语句也是这样写的可以重复执行。
请高人指点一二。万分感谢。
解决方案 »
- SQL2000移植到SQL2008内,该语句无法执行了。求大侠改进sysobjects ,sysproperties
- 这个SQL怎么写。。不知道怎么描述~
- union SQL不能正确取数据的问题,我执行下面SQL,结果为1条 ,不正确请问为什么,怎么解决
- 积分榜统计问题!
- 这条SQL怎么写?
- 关于MRP中的密茫问题,先声谢谢
- 每个人的在线时间的统计
- 我安装了win2003 3790版 不支持SQL2000 如何解决
- 各位大侠,求一条巨难的sql
- 如何在SQL語言中將數据庫或數据表作為一個對象來用?
- sql server 2005查询结果 导出为EXCEL
- SQL SERVER中触发器的执行过程是怎样的?
if @@fetch_status <> 0 break 就是因为这句。稍微改了下。
declare cur_1 cursor for
select distinct acc_code,moneyin_dur from acc_comm_rate
open cur_1
while @@fetch_status = 0
begin
.......
fetch cur_1 into @acc_code,@moneyin_dur
end
print '-----'
close cur_1
deallocate cur_1
这样也只能执行一次。
将实表改为临时表可以执行多次。
或按帮助中将fetch next from cur_1 into @acc_code,@moneyin_dur 用两次才行。
(游标打开时执行一次,循环时再执行一次)
不明白这是为什么?
declare @acc_code char(7)
declare @moneyin_dur smallint
drop table #tmp
select distinct acc_code,moneyin_dur into #tmp
from acc_comm_rate
declare cur_1 cursor for
select * from #tmp
open cur_1
--fetch next from cur_1 into @acc_code,@moneyin_dur
--while (@@fetch_status = 0 )
while (1=1)
begin
fetch cur_1 into @acc_code,@moneyin_dur
if @@fetch_status <> 0 break
print @acc_code + ' ' + convert(char(20),@moneyin_dur)
--fetch next from cur_1 into @acc_code,@moneyin_dur
end close cur_1
deallocate cur_1
use book
drop table #tmp
select * into #tmp from student
go/*
1定义游标
2打开游标
3提示数据
4关闭游标
5销毁游标
*/
declare @stuid varchar(4),@stuName varchar(20),@major varchar(20)
declare csr cursor for
select * from student
open csr
fetch from csr into @stuid,@stuName,@major --提取一行到游标
while(1=1)
begin
if(@@fetch_status<>0)
break
print @stuid
fetch from csr into @stuid,@stuName,@major--提取下一行到游标
end
close csr
deallocate csr
@@fetch_status呢?
fetch cur_1 into @acc_code,@moneyin_dur