2011-01-25 102 views
2

我有一个返回单行的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 

有什么办法,我可以去光标内, 请帮助我。

回答

8

这听起来不像你需要一个游标(你应该尽量避免)。如果你确定你可以做的结果的存在:

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 
+0

感谢AdaTheDev – happysmile 2011-01-31 05:17:58