manejo de fetch

27/02/2006 - 22:04 por Miguel Arias | Informe spam
Buenas tardes a tod@s:

la cuestion es la siguiente:
tengo una tlb movimientos y otra saldos
en la tabla movimientos tengo la siguiente inf.
cuenta monto
1 1
1 1
2 1
2 2
3 3
3 3

en la tabla saldos después de ejecutar el siguiente código tiene que quedar
así:
cuenta monto
1 2 --el valor total de los montos de las cuentas 1
2 3 --el valor total de los montos de las cuentas 2
3 6 --el valor total de los montos de las cuentas 3
etc...

pero cuando ejecuto el código anexo queda así:
cuenta monto
1 7
2 6
3 6

este es el código que ejecuto, les agradezco que me puedan ayudar a
encontrar el error.
de antemano muchas gracias.


DECLARE @CUENTA INT
DECLARE @MONTO INT

DECLARE TEST_CURSOR CURSOR FOR
SELECT CUENTA, MONTO FROM MOVIMIENTOS



OPEN TEST_CURSOR
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
WHILE @@fetch_status = 0



BEGIN
IF EXISTS(SELECT CUENTA FROM SALDOS WHERE CUENTA = @CUENTA)
UPDATE SALDOS
SET MONTO = MONTO + @MONTO
ELSE
INSERT INTO SALDOS VALUES (@CUENTA,@MONTO)
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
END
CLOSE TEST_CURSOR
DEALLOCATE TEST_CURSOR



MIGUEL F. ARIAS PERDOMO

mfariasp@alfcom.com

Preguntas similare

Leer las respuestas

#6 Maxi [MVP]
28/02/2006 - 01:29 | Informe spam
Claro Manel, tu consulta se puede resolver sin cursores, yo quiero saber de
donde sale
@MONTO

Si revisas bien tus libros on line veras que se puede hacer con UPDATE
(revisa bien este comando) y dime de donde sale monto, si es fijo o depende
de un campo


Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Miguel Arias" escribió en el mensaje
news:%23x0rQv$
Maxi la verdad no te entiendo muy bien la pregunta te agradeceria si
fueras mas claro.

Muchas gracias
"Maxi [MVP]" escribió en el mensaje
news:%23paC5p$
Miguel, debes usar la consulta directamente UPDATE, de donde sale Monto?




Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Miguel Arias" escribió en el mensaje
news:%23ue4vy%
Isaías, gracias por la respuesta; pero me surge otra pregunta:
con este código yo validaba que la cuenta existiera o no
IF EXISTS(SELECT CUENTA FROM SALDOS WHERE CUENTA = @CUENTA)
UPDATE SALDOS
SET MONTO = MONTO + @MONTO
ELSE
INSERT INTO SALDOS VALUES (@CUENTA,@MONTO)
con la sumatoria como valido esto??
"Isaias" escribió en el mensaje
news:
Miguel

Si lo que quieres es hacer una sumatoria, porque no hacerlo de forma
directa.

SELECT Cuenta, SUM(Monto) FROM Tutabla GROUP BY cuenta


Saludos
IIslas


"Miguel Arias" escribió:

Buenas tardes a :

la cuestion es la siguiente:
tengo una tlb movimientos y otra saldos
en la tabla movimientos tengo la siguiente inf.
cuenta monto
1 1
1 1
2 1
2 2
3 3
3 3

en la tabla saldos después de ejecutar el siguiente código tiene que
quedar
así:
cuenta monto
1 2 --el valor total de los montos de las cuentas 1
2 3 --el valor total de los montos de las cuentas 2
3 6 --el valor total de los montos de las cuentas 3
etc...

pero cuando ejecuto el código anexo queda así:
cuenta monto
1 7
2 6
3 6

este es el código que ejecuto, les agradezco que me puedan ayudar a
encontrar el error.
de antemano muchas gracias.


DECLARE @CUENTA INT
DECLARE @MONTO INT

DECLARE TEST_CURSOR CURSOR FOR
SELECT CUENTA, MONTO FROM MOVIMIENTOS



OPEN TEST_CURSOR
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
WHILE @@fetch_status = 0



BEGIN
IF EXISTS(SELECT CUENTA FROM SALDOS WHERE CUENTA = @CUENTA)
UPDATE SALDOS
SET MONTO = MONTO + @MONTO
ELSE
INSERT INTO SALDOS VALUES (@CUENTA,@MONTO)
FETCH NEXT FROM TEST_CURSOR
INTO @CUENTA, @MONTO
END
CLOSE TEST_CURSOR
DEALLOCATE TEST_CURSOR



MIGUEL F. ARIAS PERDOMO






















email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida