Cursores - Urgente

27/01/2005 - 00:15 por Juan | Informe spam
Hola a Tod@s

Tengo el siguiente cursor, pero me devuelve el resultado como si fuesen dos
consultas por aparte, en lugar de ser una sola donde se mezclen los
regitros...

Cualquier ayuda les agradezco

DECLARE @TIPOFACTURA CHAR(1),
@NumFactura INT

DECLARE TipoFact CURSOR
FOR Select distinct (fact.NumFactura),
FACT.TipoFact

From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and TipCli.CodTipoCliente=
SBO.U_CLIENTIP

ORDER BY NUMFACTURA

OPEN TipoFact
FETCH NEXT FROM TipoFact INTO @NumFactura,@TIPOFACTURA

WHILE @@FETCH_STATUS = 0

BEGIN

IF @TIPOFACTURA = 'C'
Select distinct (fact.NumFactura),
SBO.cardname,
FACT.TipoFact,
FACT.Fecha,
FACT.Monto as MontoIngreso,
0 as MontoEgreso,
TipCli.CodTipoId,
TipCli.Descripcion


From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and TipCli.CodTipoCliente=
SBO.U_CLIENTIP and FACT.TipoFact = 'C'

ORDER BY NUMFACTURA


ELSE


Select distinct (fact.NumFactura),
SBO.cardname,
FACT.TipoFact,
FACT.Fecha,
0 as MontoIngreso,
FACT.Monto as MontoEgreso,
TipCli.CodTipoId,
TipCli.Descripcion


From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and TipCli.CodTipoCliente=
SBO.U_CLIENTIP and FACT.TipoFact = 'V'

ORDER BY NUMFACTURA


FETCH NEXT FROM TipoFact INTO @NumFactura,@TIPOFACTURA
END


CLOSE TipoFact
DEALLOCATE TipoFact
GO

Preguntas similare

Leer las respuestas

#1 MAXI
27/01/2005 - 00:27 | Informe spam
Hola Juan, por mas que no responda t pregunta te comento: El uso de cursores
no es nada recomendado, porque no nos cuentas mejor que quieres resolver con
ese cursor y vemos como implementarlo de otra manera, te parece? si me pasas
datos, estructuras y objetivo bien claro, te podemos desde aqui ayudar a
desarrollar el metodo sin cursores.

Ahh, los cursores son malos porque: Son ineficientes, generan bloqueos y son
poco escalables



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"Juan" escribió en el mensaje
news:
Hola a

Tengo el siguiente cursor, pero me devuelve el resultado como si fuesen
dos
consultas por aparte, en lugar de ser una sola donde se mezclen los
regitros...

Cualquier ayuda les agradezco

DECLARE @TIPOFACTURA CHAR(1),
@NumFactura INT

DECLARE TipoFact CURSOR
FOR Select distinct (fact.NumFactura),
FACT.TipoFact

From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and TipCli.CodTipoCliente> SBO.U_CLIENTIP

ORDER BY NUMFACTURA

OPEN TipoFact
FETCH NEXT FROM TipoFact INTO @NumFactura,@TIPOFACTURA

WHILE @@FETCH_STATUS = 0

BEGIN

IF @TIPOFACTURA = 'C'
Select distinct (fact.NumFactura),
SBO.cardname,
FACT.TipoFact,
FACT.Fecha,
FACT.Monto as MontoIngreso,
0 as MontoEgreso,
TipCli.CodTipoId,
TipCli.Descripcion


From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and TipCli.CodTipoCliente> SBO.U_CLIENTIP and FACT.TipoFact = 'C'

ORDER BY NUMFACTURA


ELSE


Select distinct (fact.NumFactura),
SBO.cardname,
FACT.TipoFact,
FACT.Fecha,
0 as MontoIngreso,
FACT.Monto as MontoEgreso,
TipCli.CodTipoId,
TipCli.Descripcion


From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and TipCli.CodTipoCliente> SBO.U_CLIENTIP and FACT.TipoFact = 'V'

ORDER BY NUMFACTURA


FETCH NEXT FROM TipoFact INTO @NumFactura,@TIPOFACTURA
END


CLOSE TipoFact
DEALLOCATE TipoFact
GO

Respuesta Responder a este mensaje
#2 ulises
27/01/2005 - 00:37 | Informe spam
Y eso es correcto, en realidad te retornará tantas
consultas como filas tengas en el cursor, lo que necesitas
en primer lugar es matar el cursor y realizar dos select
uno por cada tipo de factura y los unas con UNION ALL.

Saludos,
Ulises

Hola a

Tengo el siguiente cursor, pero me devuelve el resultado


como si fuesen dos
consultas por aparte, en lugar de ser una sola donde se


mezclen los
regitros...

Cualquier ayuda les agradezco

DECLARE @TIPOFACTURA CHAR(1),
@NumFactura INT

DECLARE TipoFact CURSOR
FOR Select distinct (fact.NumFactura),
FACT.TipoFact

From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and


TipCli.CodTipoCliente=
SBO.U_CLIENTIP

ORDER BY NUMFACTURA

OPEN TipoFact
FETCH NEXT FROM TipoFact INTO @NumFactura,@TIPOFACTURA

WHILE @@FETCH_STATUS = 0

BEGIN

IF @TIPOFACTURA = 'C'
Select distinct (fact.NumFactura),
SBO.cardname,
FACT.TipoFact,
FACT.Fecha,
FACT.Monto as MontoIngreso,
0 as MontoEgreso,
TipCli.CodTipoId,
TipCli.Descripcion


From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and


TipCli.CodTipoCliente=
SBO.U_CLIENTIP and FACT.TipoFact = 'C'

ORDER BY NUMFACTURA


ELSE


Select distinct (fact.NumFactura),
SBO.cardname,
FACT.TipoFact,
FACT.Fecha,
0 as MontoIngreso,
FACT.Monto as MontoEgreso,
TipCli.CodTipoId,
TipCli.Descripcion


From SBOCasaCambio..OCRD SBO,
dbo.SCGPOS_Factura FACT,
SCGPOS_TipoCliente TipCli

where FACT.CodCliente = SBO.CardCode and


TipCli.CodTipoCliente=
SBO.U_CLIENTIP and FACT.TipoFact = 'V'

ORDER BY NUMFACTURA


FETCH NEXT FROM TipoFact INTO @NumFactura,@TIPOFACTURA
END


CLOSE TipoFact
DEALLOCATE TipoFact
GO

.

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