![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#2
|
|||
|
|||
|
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. |
|
|
|