Ayuda con cursor

13/02/2007 - 21:15 por Rosario | Informe spam
Que tal, alguien me puede ayudar en esto, tengo este cursor el cual se
ejecuta casi bien y digo casi por que la parte del INSERT que es la que
me importa no funciona, espero y alguien me pueda decir en que estoy mal.

Muchas gracias por cualquier ayuda.




DECLARE @refnbr varchar(6)

DECLARE doctos_referencia CURSOR FOR

SELECT RefNbr from vmvwCobranzaVendedores
WHERE perpost in ('200612','200611','200610') and slsperid='35'

OPEN doctos_referencia

FETCH NEXT FROM doctos_referencia

INTO @refnbr

WHILE @@FETCH_STATUS = 0

BEGIN

PRINT @refnbr

INSERT INTO com_referencia_doctos (id_calculo,docto_referencia,
tabla_referencia, monto, ponderacion_dias)
VALUES (2747,@refnbr,'tabla1',0, 0)

FETCH NEXT FROM doctos_referencia
INTO @refnbr

END

CLOSE doctos_referencia
DEALLOCATE doctos_referencia

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
13/02/2007 - 21:27 | Informe spam
Rosario,

Cual es el error?


AMB
Respuesta Responder a este mensaje
#2 Jose Mariano Alvarez
13/02/2007 - 22:13 | Informe spam
Ademas de lo que dijo alejandro te sugeriria que si precisas el cursor uses
FAST_FORWARD en la declaracion del cursor,

Pero para hacer eso NO HACE FALTA un cursor

INSERT INTO com_referencia_doctos
(
id_calculo,
docto_referencia,
tabla_referencia,
monto,
ponderacion_dias
)
select
2747,
refnbr,
'tabla1',
0,
0
from vmvwCobranzaVendedores
WHERE
perpost in ('200612','200611','200610') and slsperid='35'
.

.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Rosario" wrote in message
news:%
Que tal, alguien me puede ayudar en esto, tengo este cursor el cual se
ejecuta casi bien y digo casi por que la parte del INSERT que es la que me
importa no funciona, espero y alguien me pueda decir en que estoy mal.

Muchas gracias por cualquier ayuda.




DECLARE @refnbr varchar(6)

DECLARE doctos_referencia CURSOR FOR

SELECT RefNbr from vmvwCobranzaVendedores
WHERE perpost in ('200612','200611','200610') and slsperid='35'

OPEN doctos_referencia

FETCH NEXT FROM doctos_referencia

INTO @refnbr

WHILE @@FETCH_STATUS = 0

BEGIN

PRINT @refnbr

INSERT INTO com_referencia_doctos (id_calculo,docto_referencia,
tabla_referencia, monto, ponderacion_dias)
VALUES (2747,@refnbr,'tabla1',0, 0)

FETCH NEXT FROM doctos_referencia
INTO @refnbr

END

CLOSE doctos_referencia
DEALLOCATE doctos_referencia
Respuesta Responder a este mensaje
#3 Rosario
14/02/2007 - 00:43 | Informe spam
Jose Mariano Alvarez escribió:
Ademas de lo que dijo alejandro te sugeriria que si precisas el cursor uses
FAST_FORWARD en la declaracion del cursor,

Pero para hacer eso NO HACE FALTA un cursor

INSERT INTO com_referencia_doctos
(
id_calculo,
docto_referencia,
tabla_referencia,
monto,
ponderacion_dias
)
select
2747,
refnbr,
'tabla1',
0,
0
from vmvwCobranzaVendedores
WHERE
perpost in ('200612','200611','200610') and slsperid='35'
.

.



Que tal, muchas gracias por la ayuda, pero resulta que los campos
id_calculo, tabla_referencia, monto y ponderacion_dias son externos a la
tabla vmvwCobranzaVendedores, estos los vouy a pasar yo como parámetros.

Saludos.
Respuesta Responder a este mensaje
#4 Rosario
14/02/2007 - 00:46 | Informe spam
Alejandro Mesa escribió:
Rosario,

Cual es el error?


AMB


Que tal muchas gracias por la ayuda, el problema era que no me queria
hacer el insert, pero ya deje mi cursor así y si funciona


DECLARE @refnbr varchar(6), @total real
DECLARE @referencia varchar(6), @monto real, @nombre_tabla varchar(10)

DECLARE doctos_referencia CURSOR FOR

SELECT RefNbr, total from solmaster.herramientas.dbo.vmvwCobranzaVendedores
WHERE perpost in ('200612','200611','200610') and slsperid='35'

OPEN doctos_referencia

FETCH NEXT FROM doctos_referencia

INTO @refnbr, @total

WHILE @@FETCH_STATUS = 0

BEGIN

PRINT @refnbr
PRINT @total
SET @nombre_tabla='Cobranza'
SET @referencia=@refnbr
SET @monto=@total

INSERT INTO com_referencia_doctos (id_calculo,docto_referencia,
tabla_referencia, monto, ponderacion_dias)
VALUES (2747,@referencia,@nombre_tabla,@monto, 0)


FETCH NEXT FROM doctos_referencia
INTO @refnbr, @total

END

CLOSE doctos_referencia
DEALLOCATE doctos_referencia

Ahora bien, si me pudieran hacer algunas observaciones y/o comentarios
al respecto de si esto esta correcto se los agradecería mucho.

Saludos.
Respuesta Responder a este mensaje
#5 Alejandro Mesa
14/02/2007 - 02:47 | Informe spam
Rosario,

Segun lo que comentas, no hace falta usar un cursor. Puedes hacer el insert
atraves de una select.

Ejemplo:

declare @nombre_tabla varchar(10)

set @nombre_tabla='Cobranza'

INSERT INTO com_referencia_doctos (
id_calculo,
docto_referencia,
tabla_referencia,
monto,
ponderacion_dias
)
SELECT
2747,
RefNbr,
@nombre_tabla,
total,
0
from
solmaster.herramientas.dbo.vmvwCobranzaVendedores
WHERE
perpost in ('200612','200611','200610') and slsperid='35'
go

En caso de que pases id_calculo, tabla_referencia, monto y ponderacion_dias
como parametros, usa los parametros en la sentencia "select".


AMB


"Rosario" wrote:

Jose Mariano Alvarez escribió:
> Ademas de lo que dijo alejandro te sugeriria que si precisas el cursor uses
> FAST_FORWARD en la declaracion del cursor,
>
> Pero para hacer eso NO HACE FALTA un cursor
>
> INSERT INTO com_referencia_doctos
> (
> id_calculo,
> docto_referencia,
> tabla_referencia,
> monto,
> ponderacion_dias
> )
> select
> 2747,
> refnbr,
> 'tabla1',
> 0,
> 0
> from vmvwCobranzaVendedores
> WHERE
> perpost in ('200612','200611','200610') and slsperid='35'
> .
>
> .
>
Que tal, muchas gracias por la ayuda, pero resulta que los campos
id_calculo, tabla_referencia, monto y ponderacion_dias son externos a la
tabla vmvwCobranzaVendedores, estos los vouy a pasar yo como parámetros.

Saludos.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida