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