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 

解决方案 »

  1.   

    declare @aa varchar(2), @ab varchar(50),@bb varchar(2)
    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
      

  2.   

    WHILE @@FETCH_STATUS = 0

    begin 
    insert into test2 values(@aa,@ab,@bb)
             FETCH C_test INTO @aa,@ab,@bb ---缺少这句.
    end CLOSE C_TEST           ---
    DEALLOCATE C_TEST      ---养成良好的习惯,使用完毕,立即释放.
      

  3.   

    FETCH C_test INTO @aa,@ab,@bb
    让游标指针下移一个,当游标到了末尾时@@FETCH_STATUS就不等于0了