Problemas trabajando con Cursores en SQL Server 7.0

18/10/2006 - 16:37 por Hernan Rocca | Informe spam
Hola gente del foro, estaba teniendo un inconveniente cuando trabajo con
cursores para luego insertar esos datos en una tabla.
El problema es el siguiente, cuando ejecuto el script que realiza el insert
en una tabla vacia generalmente tarda unos segundos, pero bajo las mismas
condiciones (en maquina local, sin ningun usuario conectado, insert sobre
una tabla vacia) suele tardar varios minutos.
el cursor recorre unos 10000 o 20000 registros y luego los inserta en otra
tabla, pero hay veces que tarda mucho, mucho más que otras veces... esto se
puede deber a alguna configuración, como ser la base tempdb o la utilización
de la memoria o algo por el estilo, espero que me puedan guiar para ver el
motivo de este comportamiento, El codigo que utilizo por las dudas es el
siguiente:

DECLARE @_comp INT
DECLARE @_cont INT
DECLARE @_tcomp VARCHAR(2)
DECLARE @_femi DATETIME
DECLARE @_fven DATETIME
DECLARE @CANT INT
DECLARE @TOTAL INT

SET NOCOUNT ON
SET @TOTAL = 0

DECLARE lista CURSOR FOR
SELECT tipo_de_comprobante, numero_de_comprobante, codigo_de_contrato,
fecha_de_emision, fecha_de_vencimiento
FROM datcom
WHERE idusuario = 50
AND codigo_de_contrato <> 0

OPEN lista
FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
WHILE @@fetch_status=0
BEGIN

INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso, mas_asiento,
nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
fac_barras, fac_pad_clie)
SELECT
emp_codigo = 6,
suc_codigo = 1,
cte_tipo = CASE @_tcomp
WHEN 'BD' THEN 28
WHEN 'BP' THEN 27
WHEN 'CR' THEN 32
WHEN 'CV' THEN 17
WHEN 'DC' THEN 14
ELSE ' '
END,
fac_letra = 'A',
fac_numero = @_comp,
cont_numero = @_cont,
fac_fecha = @_femi,
fec_vto = @_fven,
total_cte_neto = 0,
nro_recibo_merc = 0,
nro_recibo_iva = 0,
fac_facturado = NULL,
mas_ingreso = @_fven,
mas_asiento = 0,
nd_comp_comision = 0,
nd_vend_comision = 0,
cont_cerrado = NULL,
total_iva_merc = 0,
total_iva_otros = 0,
fac_fij_item = 0,
fac_detalle_modelo = NULL,
total_neto_gravado = 0,
total_neto_gravado_2 = 0,
iva_porc = 0,
iva_porc_2 = 0,
fac_cai = NULL,
fac_cai_vto = NULL,
fac_barras = NULL,
fac_pad_clie = 0
FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
END
CLOSE Lista
DEALLOCATE Lista

print @TOTAL
SET NOCOUNT OFF

Muchas gracias desde ya,
Saludos
Hernan Rocca

Preguntas similare

Leer las respuestas

#1 Miguel Egea
18/10/2006 - 18:14 | Informe spam
Hola, soy Miguel de la brigada anticursores :), haz tu buena obra del día
mata a este cursor

INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso, mas_asiento,
nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
fac_barras, fac_pad_clie)

SELECT 6,1, CASE tipo_de_comprobante WHEN 'BD' THEN 28 WHEN
'BP' THEN 27 WHEN 'CR' THEN 32 WHEN 'CV' THEN 17 WHEN 'DC' THEN 14
ELSE ' ' END, 'A' , numero_de_comprobante,
< AQUÍ EL RESTO DE LOS CAMPOS COMO ESTÁN EN EL OTRO INSERT />
FROM datcom
WHERE idusuario = 50
AND codigo_de_contrato <> 0

estoy seguro que irá muuuuuuucho más rápido en todas las ocasiones
(particularmente si tienes un índice por codigo_de_contrato,idusuario (igual
idusuario,codigo_de_contrato, depende de la distribución)

Saludos
Miguel Egea


"Hernan Rocca" wrote in message
news:%
Hola gente del foro, estaba teniendo un inconveniente cuando trabajo con
cursores para luego insertar esos datos en una tabla.
El problema es el siguiente, cuando ejecuto el script que realiza el
insert en una tabla vacia generalmente tarda unos segundos, pero bajo las
mismas condiciones (en maquina local, sin ningun usuario conectado, insert
sobre una tabla vacia) suele tardar varios minutos.
el cursor recorre unos 10000 o 20000 registros y luego los inserta en otra
tabla, pero hay veces que tarda mucho, mucho más que otras veces... esto
se puede deber a alguna configuración, como ser la base tempdb o la
utilización de la memoria o algo por el estilo, espero que me puedan guiar
para ver el motivo de este comportamiento, El codigo que utilizo por las
dudas es el siguiente:

DECLARE @_comp INT
DECLARE @_cont INT
DECLARE @_tcomp VARCHAR(2)
DECLARE @_femi DATETIME
DECLARE @_fven DATETIME
DECLARE @CANT INT
DECLARE @TOTAL INT

SET NOCOUNT ON
SET @TOTAL = 0

DECLARE lista CURSOR FOR
SELECT tipo_de_comprobante, numero_de_comprobante, codigo_de_contrato,
fecha_de_emision, fecha_de_vencimiento
FROM datcom
WHERE idusuario = 50
AND codigo_de_contrato <> 0

OPEN lista
FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
WHILE @@fetch_status=0
BEGIN

INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso, mas_asiento,
nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
fac_barras, fac_pad_clie)
SELECT
emp_codigo = 6,
suc_codigo = 1,
cte_tipo = CASE @_tcomp
WHEN 'BD' THEN 28
WHEN 'BP' THEN 27
WHEN 'CR' THEN 32
WHEN 'CV' THEN 17
WHEN 'DC' THEN 14
ELSE ' '
END,
fac_letra = 'A',
fac_numero = @_comp,
cont_numero = @_cont,
fac_fecha = @_femi,
fec_vto = @_fven,
total_cte_neto = 0,
nro_recibo_merc = 0,
nro_recibo_iva = 0,
fac_facturado = NULL,
mas_ingreso = @_fven,
mas_asiento = 0,
nd_comp_comision = 0,
nd_vend_comision = 0,
cont_cerrado = NULL,
total_iva_merc = 0,
total_iva_otros = 0,
fac_fij_item = 0,
fac_detalle_modelo = NULL,
total_neto_gravado = 0,
total_neto_gravado_2 = 0,
iva_porc = 0,
iva_porc_2 = 0,
fac_cai = NULL,
fac_cai_vto = NULL,
fac_barras = NULL,
fac_pad_clie = 0
FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
END
CLOSE Lista
DEALLOCATE Lista

print @TOTAL
SET NOCOUNT OFF

Muchas gracias desde ya,
Saludos
Hernan Rocca


Respuesta Responder a este mensaje
#2 Alejandro Mesa
18/10/2006 - 18:59 | Informe spam
Miguel,

Te quedo bien, siempre es bienvenido un poco de humor.

Saludos,

Alejandro

"Miguel Egea" wrote:

Hola, soy Miguel de la brigada anticursores :), haz tu buena obra del día
mata a este cursor

INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso, mas_asiento,
nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
fac_barras, fac_pad_clie)

SELECT 6,1, CASE tipo_de_comprobante WHEN 'BD' THEN 28 WHEN
'BP' THEN 27 WHEN 'CR' THEN 32 WHEN 'CV' THEN 17 WHEN 'DC' THEN 14
ELSE ' ' END, 'A' , numero_de_comprobante,
< AQUÍ EL RESTO DE LOS CAMPOS COMO ESTÁN EN EL OTRO INSERT />
FROM datcom
WHERE idusuario = 50
AND codigo_de_contrato <> 0

estoy seguro que irá muuuuuuucho más rápido en todas las ocasiones
(particularmente si tienes un índice por codigo_de_contrato,idusuario (igual
idusuario,codigo_de_contrato, depende de la distribución)

Saludos
Miguel Egea


"Hernan Rocca" wrote in message
news:%
> Hola gente del foro, estaba teniendo un inconveniente cuando trabajo con
> cursores para luego insertar esos datos en una tabla.
> El problema es el siguiente, cuando ejecuto el script que realiza el
> insert en una tabla vacia generalmente tarda unos segundos, pero bajo las
> mismas condiciones (en maquina local, sin ningun usuario conectado, insert
> sobre una tabla vacia) suele tardar varios minutos.
> el cursor recorre unos 10000 o 20000 registros y luego los inserta en otra
> tabla, pero hay veces que tarda mucho, mucho más que otras veces... esto
> se puede deber a alguna configuración, como ser la base tempdb o la
> utilización de la memoria o algo por el estilo, espero que me puedan guiar
> para ver el motivo de este comportamiento, El codigo que utilizo por las
> dudas es el siguiente:
>
> DECLARE @_comp INT
> DECLARE @_cont INT
> DECLARE @_tcomp VARCHAR(2)
> DECLARE @_femi DATETIME
> DECLARE @_fven DATETIME
> DECLARE @CANT INT
> DECLARE @TOTAL INT
>
> SET NOCOUNT ON
> SET @TOTAL = 0
>
> DECLARE lista CURSOR FOR
> SELECT tipo_de_comprobante, numero_de_comprobante, codigo_de_contrato,
> fecha_de_emision, fecha_de_vencimiento
> FROM datcom
> WHERE idusuario = 50
> AND codigo_de_contrato <> 0
>
> OPEN lista
> FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
> WHILE @@fetch_status=0
> BEGIN
>
> INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
> fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
> nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso, mas_asiento,
> nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
> total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
> total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
> fac_barras, fac_pad_clie)
> SELECT
> emp_codigo = 6,
> suc_codigo = 1,
> cte_tipo = CASE @_tcomp
> WHEN 'BD' THEN 28
> WHEN 'BP' THEN 27
> WHEN 'CR' THEN 32
> WHEN 'CV' THEN 17
> WHEN 'DC' THEN 14
> ELSE ' '
> END,
> fac_letra = 'A',
> fac_numero = @_comp,
> cont_numero = @_cont,
> fac_fecha = @_femi,
> fec_vto = @_fven,
> total_cte_neto = 0,
> nro_recibo_merc = 0,
> nro_recibo_iva = 0,
> fac_facturado = NULL,
> mas_ingreso = @_fven,
> mas_asiento = 0,
> nd_comp_comision = 0,
> nd_vend_comision = 0,
> cont_cerrado = NULL,
> total_iva_merc = 0,
> total_iva_otros = 0,
> fac_fij_item = 0,
> fac_detalle_modelo = NULL,
> total_neto_gravado = 0,
> total_neto_gravado_2 = 0,
> iva_porc = 0,
> iva_porc_2 = 0,
> fac_cai = NULL,
> fac_cai_vto = NULL,
> fac_barras = NULL,
> fac_pad_clie = 0
> FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
> END
> CLOSE Lista
> DEALLOCATE Lista
>
> print @TOTAL
> SET NOCOUNT OFF
>
> Muchas gracias desde ya,
> Saludos
> Hernan Rocca
>
>



Respuesta Responder a este mensaje
#3 Hernan Rocca
19/10/2006 - 21:13 | Informe spam
Muchas gracias por la respuesta, en realidad el insert si podria hacerlo
así, el tema es que en el medio tengo cambios en los datos que no puse en el
mail para no engordarlo más, pero no creo poder cambiar el cursor por el
insert de esa manera el problema era que no sabia (perdón, no se,
jejeje) si la performance de la maquina podría estar afectada por la
ejecución del cursor por trabajar con una base temdb muy chica o por no
desocupar memoria y tratar de usar más aparte de la que ya ejecuto, porque
generalmente cuando me pasa eso reinicio la maquina servidora y ejecuto el
script del cursor nuevamente y lo realiza rápido nuevamente...
Gracias de todas formas por su tiempo, y es verdad siempre es bueno un
poco de humor, jejeje
Hasta pronto

Hernan

"Alejandro Mesa" escribió en el
mensaje news:
Miguel,

Te quedo bien, siempre es bienvenido un poco de humor.

Saludos,

Alejandro

"Miguel Egea" wrote:

Hola, soy Miguel de la brigada anticursores :), haz tu buena obra del
día
mata a este cursor

INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso,
mas_asiento,
nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
fac_barras, fac_pad_clie)

SELECT 6,1, CASE tipo_de_comprobante WHEN 'BD' THEN 28 WHEN
'BP' THEN 27 WHEN 'CR' THEN 32 WHEN 'CV' THEN 17 WHEN 'DC' THEN
14
ELSE ' ' END, 'A' , numero_de_comprobante,
< AQUÍ EL RESTO DE LOS CAMPOS COMO ESTÁN EN EL OTRO INSERT />
FROM datcom
WHERE idusuario = 50
AND codigo_de_contrato <> 0

estoy seguro que irá muuuuuuucho más rápido en todas las ocasiones
(particularmente si tienes un índice por codigo_de_contrato,idusuario
(igual
idusuario,codigo_de_contrato, depende de la distribución)

Saludos
Miguel Egea


"Hernan Rocca" wrote in message
news:%
> Hola gente del foro, estaba teniendo un inconveniente cuando trabajo
> con
> cursores para luego insertar esos datos en una tabla.
> El problema es el siguiente, cuando ejecuto el script que realiza el
> insert en una tabla vacia generalmente tarda unos segundos, pero bajo
> las
> mismas condiciones (en maquina local, sin ningun usuario conectado,
> insert
> sobre una tabla vacia) suele tardar varios minutos.
> el cursor recorre unos 10000 o 20000 registros y luego los inserta en
> otra
> tabla, pero hay veces que tarda mucho, mucho más que otras veces...
> esto
> se puede deber a alguna configuración, como ser la base tempdb o la
> utilización de la memoria o algo por el estilo, espero que me puedan
> guiar
> para ver el motivo de este comportamiento, El codigo que utilizo por
> las
> dudas es el siguiente:
>
> DECLARE @_comp INT
> DECLARE @_cont INT
> DECLARE @_tcomp VARCHAR(2)
> DECLARE @_femi DATETIME
> DECLARE @_fven DATETIME
> DECLARE @CANT INT
> DECLARE @TOTAL INT
>
> SET NOCOUNT ON
> SET @TOTAL = 0
>
> DECLARE lista CURSOR FOR
> SELECT tipo_de_comprobante, numero_de_comprobante, codigo_de_contrato,
> fecha_de_emision, fecha_de_vencimiento
> FROM datcom
> WHERE idusuario = 50
> AND codigo_de_contrato <> 0
>
> OPEN lista
> FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
> WHILE @@fetch_status=0
> BEGIN
>
> INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
> fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
> nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso,
> mas_asiento,
> nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
> total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
> total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
> fac_barras, fac_pad_clie)
> SELECT
> emp_codigo = 6,
> suc_codigo = 1,
> cte_tipo = CASE @_tcomp
> WHEN 'BD' THEN 28
> WHEN 'BP' THEN 27
> WHEN 'CR' THEN 32
> WHEN 'CV' THEN 17
> WHEN 'DC' THEN 14
> ELSE ' '
> END,
> fac_letra = 'A',
> fac_numero = @_comp,
> cont_numero = @_cont,
> fac_fecha = @_femi,
> fec_vto = @_fven,
> total_cte_neto = 0,
> nro_recibo_merc = 0,
> nro_recibo_iva = 0,
> fac_facturado = NULL,
> mas_ingreso = @_fven,
> mas_asiento = 0,
> nd_comp_comision = 0,
> nd_vend_comision = 0,
> cont_cerrado = NULL,
> total_iva_merc = 0,
> total_iva_otros = 0,
> fac_fij_item = 0,
> fac_detalle_modelo = NULL,
> total_neto_gravado = 0,
> total_neto_gravado_2 = 0,
> iva_porc = 0,
> iva_porc_2 = 0,
> fac_cai = NULL,
> fac_cai_vto = NULL,
> fac_barras = NULL,
> fac_pad_clie = 0
> FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
> END
> CLOSE Lista
> DEALLOCATE Lista
>
> print @TOTAL
> SET NOCOUNT OFF
>
> Muchas gracias desde ya,
> Saludos
> Hernan Rocca
>
>



Respuesta Responder a este mensaje
#4 Miguel Egea
23/10/2006 - 08:45 | Informe spam
sería realmente raro que no pudiesemos matar ese cursor. Y sí, ahí puede
estar buena parte de un mal performance.

pasanos el script completo y si no te lo hacemos te damos las pistas

Saludos
Miguel Egea
"Hernan Rocca" wrote in message
news:Ok8%
Muchas gracias por la respuesta, en realidad el insert si podria hacerlo
así, el tema es que en el medio tengo cambios en los datos que no puse en
el mail para no engordarlo más, pero no creo poder cambiar el cursor por
el insert de esa manera el problema era que no sabia (perdón, no se,
jejeje) si la performance de la maquina podría estar afectada por la
ejecución del cursor por trabajar con una base temdb muy chica o por no
desocupar memoria y tratar de usar más aparte de la que ya ejecuto, porque
generalmente cuando me pasa eso reinicio la maquina servidora y ejecuto el
script del cursor nuevamente y lo realiza rápido nuevamente...
Gracias de todas formas por su tiempo, y es verdad siempre es bueno un
poco de humor, jejeje
Hasta pronto

Hernan

"Alejandro Mesa" escribió en el
mensaje news:
Miguel,

Te quedo bien, siempre es bienvenido un poco de humor.

Saludos,

Alejandro

"Miguel Egea" wrote:

Hola, soy Miguel de la brigada anticursores :), haz tu buena obra del
día
mata a este cursor

INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso,
mas_asiento,
nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
fac_barras, fac_pad_clie)

SELECT 6,1, CASE tipo_de_comprobante WHEN 'BD' THEN 28 WHEN
'BP' THEN 27 WHEN 'CR' THEN 32 WHEN 'CV' THEN 17 WHEN 'DC' THEN
14
ELSE ' ' END, 'A' , numero_de_comprobante,
< AQUÍ EL RESTO DE LOS CAMPOS COMO ESTÁN EN EL OTRO INSERT />
FROM datcom
WHERE idusuario = 50
AND codigo_de_contrato <> 0

estoy seguro que irá muuuuuuucho más rápido en todas las ocasiones
(particularmente si tienes un índice por codigo_de_contrato,idusuario
(igual
idusuario,codigo_de_contrato, depende de la distribución)

Saludos
Miguel Egea


"Hernan Rocca" wrote in message
news:%
> Hola gente del foro, estaba teniendo un inconveniente cuando trabajo
> con
> cursores para luego insertar esos datos en una tabla.
> El problema es el siguiente, cuando ejecuto el script que realiza el
> insert en una tabla vacia generalmente tarda unos segundos, pero bajo
> las
> mismas condiciones (en maquina local, sin ningun usuario conectado,
> insert
> sobre una tabla vacia) suele tardar varios minutos.
> el cursor recorre unos 10000 o 20000 registros y luego los inserta en
> otra
> tabla, pero hay veces que tarda mucho, mucho más que otras veces...
> esto
> se puede deber a alguna configuración, como ser la base tempdb o la
> utilización de la memoria o algo por el estilo, espero que me puedan
> guiar
> para ver el motivo de este comportamiento, El codigo que utilizo por
> las
> dudas es el siguiente:
>
> DECLARE @_comp INT
> DECLARE @_cont INT
> DECLARE @_tcomp VARCHAR(2)
> DECLARE @_femi DATETIME
> DECLARE @_fven DATETIME
> DECLARE @CANT INT
> DECLARE @TOTAL INT
>
> SET NOCOUNT ON
> SET @TOTAL = 0
>
> DECLARE lista CURSOR FOR
> SELECT tipo_de_comprobante, numero_de_comprobante, codigo_de_contrato,
> fecha_de_emision, fecha_de_vencimiento
> FROM datcom
> WHERE idusuario = 50
> AND codigo_de_contrato <> 0
>
> OPEN lista
> FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
> WHILE @@fetch_status=0
> BEGIN
>
> INSERT INTO Fact_Cab (emp_codigo, suc_codigo, cte_tipo, fac_letra,
> fac_numero, cont_numero, fac_fecha, fec_vto, total_cte_neto,
> nro_recibo_merc, nro_recibo_iva, fac_facturado, mas_ingreso,
> mas_asiento,
> nd_comp_comision, nd_vend_comision, cont_cerrado, total_iva_merc,
> total_iva_otros, fac_fij_item, fac_detalle_modelo, total_neto_gravado,
> total_neto_gravado_2, iva_porc, iva_porc_2, fac_cai, fac_cai_vto,
> fac_barras, fac_pad_clie)
> SELECT
> emp_codigo = 6,
> suc_codigo = 1,
> cte_tipo = CASE @_tcomp
> WHEN 'BD' THEN 28
> WHEN 'BP' THEN 27
> WHEN 'CR' THEN 32
> WHEN 'CV' THEN 17
> WHEN 'DC' THEN 14
> ELSE ' '
> END,
> fac_letra = 'A',
> fac_numero = @_comp,
> cont_numero = @_cont,
> fac_fecha = @_femi,
> fec_vto = @_fven,
> total_cte_neto = 0,
> nro_recibo_merc = 0,
> nro_recibo_iva = 0,
> fac_facturado = NULL,
> mas_ingreso = @_fven,
> mas_asiento = 0,
> nd_comp_comision = 0,
> nd_vend_comision = 0,
> cont_cerrado = NULL,
> total_iva_merc = 0,
> total_iva_otros = 0,
> fac_fij_item = 0,
> fac_detalle_modelo = NULL,
> total_neto_gravado = 0,
> total_neto_gravado_2 = 0,
> iva_porc = 0,
> iva_porc_2 = 0,
> fac_cai = NULL,
> fac_cai_vto = NULL,
> fac_barras = NULL,
> fac_pad_clie = 0
> FETCH lista INTO @_tcomp, @_comp, @_cont, @_femi, @_fven
> END
> CLOSE Lista
> DEALLOCATE Lista
>
> print @TOTAL
> SET NOCOUNT OFF
>
> Muchas gracias desde ya,
> Saludos
> Hernan Rocca
>
>









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