2011-01-25 80 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