Sql server 如何在光标上迭代

Sql server 如何在光标上迭代,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我有一个select语句,它返回一行。 在此之后,我编写了一个游标作为我的@@fetch\u状态为-1它现在才不会进入游标内部 open cur_mkt print @init While (@init = 0) Begin fetch next from cur_mkt into @Desc, @Divisions print @@fetch_status if (@@fetch_status =-1) BRE

我有一个select语句,它返回一行。 在此之后,我编写了一个游标作为我的@@fetch\u状态为-1它现在才不会进入游标内部

open cur_mkt    
print @init 
While (@init = 0)      
Begin      
fetch next from cur_mkt into       
@Desc,      
@Divisions      
print @@fetch_status
if (@@fetch_status =-1)      
BREAK   
我有没有办法进入光标的内部,
请帮帮我。

听起来你不需要光标(无论如何,你应该尽量避免光标)。如果要确定结果是否存在,可以执行以下操作:

SELECT @Desc = Desc, @Divisions = Divisions
FROM YourTable
WHERE ID = 1

IF ( @@ROWCOUNT > 0 )
    BEGIN
        -- Row was found
    END
所以我建议不要使用游标

为了直接回答这个问题,您使用游标/迭代结果的方式如下:

DECLARE @A INTEGER

DECLARE cur_mkt CURSOR FOR
SELECT 1 AS A 
UNION ALL
SELECT 2 AS A

OPEN cur_mkt
FETCH NEXT FROM cur_mkt INTO @A

WHILE (@@FETCH_STATUS = 0)
    BEGIN
        PRINT @A    
        FETCH NEXT FROM cur_mkt INTO @A
    END

CLOSE cur_mkt
DEALLOCATE cur_mkt