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
 

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

Preguntas similares