Memoria!!
Hola que tal, quisa sea la unica solucion si es que lo haces dentro del motor de BD, si es asi que debes hacerlo, los cursores ayudan bastante, pero consumen bastantes recursos de la maquina, quizas en el modelo que tu dices no lo sea, pero es para tener en cuenta.
Dime con que motor estas trabajando para ver si conozco la sintaxis propia de el, asi te adapto alguna solucion. Si no la mejor solucion es ver la ayuda de este, suelen ser bastante claras. Creo que todos trabajan de la misma manera, supongo, asi que de una manera general seria :
//Definimos el Cursor
DECLARE tabla1_cursor CURSOR FOR
SELECT * FROM tabla1
WHERE IdModRpt = @pMod //-> parametro del SP
//abrimos el cursor
OPEN tabla1_cursor
//primera lectura
FETCH NEXT FROM tabla1_cursor
INTO @idMod, @idArea // variables del SP, debes definirlas,
//guardamos la lectura desde el cursor
WHILE @@FETCH_STATUS = 0
BEGIN
//Aqui es el cuerpo donde tratas los datos, podrias optar por definir mas
//cursores aqui adentro pero no es recomendable.
// lo "ideal" a mi modo de ver es declarar una tabla temporal en donde
// guardes el resultado del cursor, y sobre esta tabla temporal crear
// otro cursor, y asi hasta que llegues a donde quieras.
FETCH NEXT FROM tabla1_cursor // continuacion del Ciclo
INTO @idMod, @idArea
END
CLOSE tabla1_cursor
DEALLOCATE tabla1_cursor
GO
Espero haberte aclarado algo el panorama, cualquier cosa que necesites mas ayuda, avisas. Saludos.
|