web-dev-qa-db-fra.com

Obtenir plusieurs valeurs dans le curseur SQL Server

J'ai un curseur contenant plusieurs colonnes de la ligne qu'il ramène que je voudrais traiter en même temps. Je remarque que la plupart des exemples que je vois sur l’utilisation des curseurs montrent qu’ils assignent une colonne particulière du curseur à une valeur scalaire un à la fois, puis qu’ils passent à la ligne suivante.

par exemple.

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  

WHILE @@FETCH_STATUS = 0  
BEGIN  
       --Do Stuff with @name scalar value, then get next row from cursor

       FETCH NEXT FROM db_cursor INTO @name  
END

Ce que je veux savoir, c'est s'il est possible de faire quelque chose comme ceci:

    OPEN db_cursor  
    FETCH NEXT FROM db_cursor; 

    WHILE @@FETCH_STATUS = 0  
    BEGIN  
           SET @myName = db_cursor.name;
           SET @myAge = db_cursor.age;
           SET @myFavoriteColor = db_cursor.favoriteColor;
           --Do stuff with scalar values

           FETCH NEXT FROM db_cursor; 
    END

L'aide est toujours appréciée.

68
kingrichard2005

Cela devrait fonctionner:

DECLARE db_cursor CURSOR FOR SELECT name, age, color FROM table; 
DECLARE @myName VARCHAR(256);
DECLARE @myAge INT;
DECLARE @myFavoriteColor VARCHAR(40);
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @myName, @myAge, @myFavoriteColor;
WHILE @@FETCH_STATUS = 0  
BEGIN  

       --Do stuff with scalar values

       FETCH NEXT FROM db_cursor INTO @myName, @myAge, @myFavoriteColor;
END;
CLOSE db_cursor;
DEALLOCATE db_cursor;
140
LukLed