2011-02-11 42 views
50

Tengo un cursor que contiene varias columnas de la fila que trae de vuelta que me gustaría procesar a la vez. Noto que la mayoría de los ejemplos que he visto sobre cómo usar los cursores los muestran asignando una columna particular del cursor a un valor escalar, uno a la vez, y luego pasan a la siguiente fila,Obtenga varios valores en el Cursor del SQL Server

p.

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 

Lo que quiero saber es si es posible hacer algo como lo siguiente:

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 

Ayuda siempre es de agradecer.

Respuesta

93

Esto debería funcionar:

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; 
Cuestiones relacionadas