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.
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;