如何迭代游标

hap*_*ile 2 sql-server sql-server-2005

我有一个返回单行的select语句.之后我写了一个游标,就像我@@ fetch_status是-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   
Run Code Online (Sandbox Code Playgroud)

有什么方法可以进入光标,请帮帮我.

Ada*_*Dev 11

这听起来不像你需要一个光标(你应该尽量避免使用它).如果您确定是否存在结果,您可以执行以下操作:

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

IF ( @@ROWCOUNT > 0 )
    BEGIN
        -- Row was found
    END
Run Code Online (Sandbox Code Playgroud)

所以我建议不要使用游标.

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

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
Run Code Online (Sandbox Code Playgroud)