declare @aa varchar(2), @ab varchar(50),@bb varchar(2)
declare C_test cursor for
select * from test1
open C_test
FETCH C_test INTO @aa,@ab,@bb
if @@error < 0
begin
close C_test
DEALLOCATE C_test
return
end
WHILE @@FETCH_STATUS = 0
begin
insert into test2 values(@aa,@ab,@bb)
FETCH C_test INTO @aa,@ab,@bb
end
declare C_test cursor for
select * from test1
open C_test
FETCH C_test INTO @aa,@ab,@bb
if @@error < 0
begin
close C_test
DEALLOCATE C_test
return
end
WHILE @@FETCH_STATUS = 0
begin
insert into test2 values(@aa,@ab,@bb)
FETCH C_test INTO @aa,@ab,@bb
end
declare C_test cursor for
select * from test1
open C_test
FETCH next INTO @aa,@ab,@bb
if @@error < 0
begin
close C_test
DEALLOCATE C_test
return
end
WHILE @@FETCH_STATUS = 0
begin
insert into test2 values(@aa,@ab,@bb)
FETCH next INTO @aa,@ab,@bb
end
close C_test
DEALLOCATE C_test
begin
insert into test2 values(@aa,@ab,@bb)
FETCH C_test INTO @aa,@ab,@bb ---缺少这句.
end CLOSE C_TEST ---
DEALLOCATE C_TEST ---养成良好的习惯,使用完毕,立即释放.
让游标指针下移一个,当游标到了末尾时@@FETCH_STATUS就不等于0了