Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

@@fetch_status en WHILE anidado

Estas en el tema de @@fetch_status en WHILE anidado en el foro de Bases de Datos General en Foros del Web. Saludos. necesito anidar un while dentro de otro while utilizando cursores el problema es que @@fetch_status que es quien devuelve estado del cursor (es decir, ...
  #1 (permalink)  
Antiguo 23/07/2002, 11:21
 
Fecha de Ingreso: abril-2002
Mensajes: 17
Antigüedad: 22 años
Puntos: 0
@@fetch_status en WHILE anidado

Saludos.

necesito anidar un while dentro de otro while utilizando cursores el problema es que @@fetch_status que es quien devuelve estado del cursor (es decir, si este ya esta al final de los registros tal y como lo hace un EOF ) es global para ambos cursores. como puedo diferenciar estado de cada uno de mis cursores
  #2 (permalink)  
Antiguo 28/05/2004, 12:42
Avatar de Avelar  
Fecha de Ingreso: noviembre-2002
Ubicación: Ensenada, Baja California, México
Mensajes: 673
Antigüedad: 21 años, 5 meses
Puntos: 1
Este post fué escrito hace ya un buen rato, pero por si alguien llega a tener este problema les pongo un ejemplo de la ayuda de SQL Server:
Código:
B. Use nested cursors to produce report output
This example shows how cursors can be nested to produce complex reports. The inner cursor is declared for each author.

SET NOCOUNT ON

DECLARE @au_id varchar(11), @au_fname varchar(20), @au_lname varchar(40),
   @message varchar(80), @title varchar(80)

PRINT "-------- Utah Authors report --------"

DECLARE authors_cursor CURSOR FOR 
SELECT au_id, au_fname, au_lname
FROM authors
WHERE state = "UT"
ORDER BY au_id

OPEN authors_cursor

FETCH NEXT FROM authors_cursor 
INTO @au_id, @au_fname, @au_lname

WHILE @@FETCH_STATUS = 0
BEGIN
   PRINT " "
   SELECT @message = "----- Books by Author: " + 
      @au_fname + " " + @au_lname

   PRINT @message

   -- Declare an inner cursor based   
   -- on au_id from the outer cursor.

   DECLARE titles_cursor CURSOR FOR 
   SELECT t.title
   FROM titleauthor ta, titles t
   WHERE ta.title_id = t.title_id AND
   ta.au_id = @au_id   -- Variable value from the outer cursor

   OPEN titles_cursor
   FETCH NEXT FROM titles_cursor INTO @title

   IF @@FETCH_STATUS <> 0 
      PRINT "         <<No Books>>"     

   WHILE @@FETCH_STATUS = 0
   BEGIN
      
      SELECT @message = "         " + @title
      PRINT @message
      FETCH NEXT FROM titles_cursor INTO @title
   
   END

   CLOSE titles_cursor
   DEALLOCATE titles_cursor
   
   -- Get the next author.
   FETCH NEXT FROM authors_cursor 
   INTO @au_id, @au_fname, @au_lname
END

CLOSE authors_cursor
DEALLOCATE authors_cursor
GO
__________________
Ariel Avelar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.