Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2007, 12:17
Avatar de dianatorres
dianatorres
 
Fecha de Ingreso: diciembre-2006
Mensajes: 26
Antigüedad: 18 años, 1 mes
Puntos: 0
Sonrisa Ayuda Chikos Con un Stored



disculpen tengo este estored ke maneja un cursor i tablas temporales ,kisisera saber si se puiede hacer de otra manera , que no necesite usar estp ke la verdad se tarda mucho i trae mui pocos registros, me gustaria saber si se puede hacer de otra manera porfavor ayudenme


CREATE PROC ABSELNUMFABDUPLICADOSDIFASIGNA
AS

DECLARE @IdLGS1 int
DECLARE @Grupo1 smallint
DECLARE @Secuencia1 smallint
DECLARE @NumeroFabrica1 char(25)
DECLARE @Origen1 char(3)
DECLARE @IdLGS2 int
DECLARE @Grupo2 smallint
DECLARE @Secuencia2 smallint
DECLARE @NumeroFabrica2 char(25)
DECLARE @Origen2 char(3)
DECLARE @Ori1 tinyint
DECLARE @Ori2 tinyint
DECLARE @sw_paso tinyint
DECLARE @Cuenta1 smallint
DECLARE @Cuenta2 smallint

select @sw_paso = 0

CREATE TABLE #NumerosFabDupDifAsig
( Grupo1 smallint,Secuencia1 smallint, NumeroFabrica1 char(25), Origen1 char(3),
Grupo2 smallint,Secuencia2 smallint, NumeroFabrica2 char(25), Origen2 char(3))

DECLARE ARTICULOS CURSOR FOR
SELECT Secuencias_a.IdLGS,
Secuencias_a.IdGrupo,
Secuencias_a.IdSecuencia,
Secuencias_a.NumFabrica,
Secuencias_a.IdFolioOrigen,
Secuencias_b.IdLGS,
Secuencias_b.IdGrupo,
Secuencias_b.IdSecuencia,
Secuencias_b.NumFabrica,
Secuencias_b.IdFolioOrigen
FROM Secuencias Secuencias_a,
Secuencias Secuencias_b
WHERE ( Secuencias_a.NumFabrica = Secuencias_b.NumFabrica ) and
( Secuencias_a.IdFolioOrigen = Secuencias_b.IdFolioOrigen ) and
( Secuencias_a.IdLGS <> Secuencias_b.IdLGS )
ORDER BY Secuencias_a.NumFabrica ASC,
Secuencias_b.NumFabrica ASC

OPEN ARTICULOS

FETCH NEXT FROM ARTICULOS into @IdLGS1, @Grupo1, @Secuencia1, @NumeroFabrica1, @Ori1, @IdLGS2, @Grupo2, @Secuencia2, @NumeroFabrica2, @Ori2
while @@FETCH_STATUS = 0
begin
SELECT @Cuenta1 = 0, @Cuenta2 = 0

SELECT @Origen1 = ABFoliosPedidos.IdCve
FROM ABFoliosPedidos
WHERE ABFoliosPedidos.IdFolio = @Ori1

SELECT @Origen2 = ABFoliosPedidos.IdCve
FROM ABFoliosPedidos
WHERE ABFoliosPedidos.IdFolio = @Ori2

SELECT @Cuenta1 = count(ABAsignaciones.IdAsigna)
FROM ABAsignaciones
WHERE ABAsignaciones.IdLGS = @IdLGS1

SELECT @Cuenta2 = count(ABAsignaciones.IdAsigna)
FROM ABAsignaciones
WHERE ABAsignaciones.IdLGS = @IdLGS2

if @Cuenta1 = @Cuenta2
BEGIN
FETCH NEXT FROM ARTICULOS into @IdLGS1, @Grupo1, @Secuencia1, @NumeroFabrica1, @Ori1, @IdLGS2, @Grupo2, @Secuencia2, @NumeroFabrica2, @Ori2
continue
END

SELECT @sw_paso = Grupo1
FROM #NumerosFabDupDifAsig
WHERE (Grupo1 = @Grupo2 and
Secuencia1 = @Secuencia2 ) or
(Grupo2 = @Grupo1 and
Secuencia2 = @Secuencia1)

if @sw_paso = 0
INSERT INTO #NumerosFabDupDifAsig
( Grupo1,Secuencia1,NumeroFabrica1,Origen1,
Grupo2,Secuencia2,NumeroFabrica2,Origen2)
VALUES (@Grupo1, @Secuencia1, @NumeroFabrica1,@Origen1,
@Grupo2, @Secuencia2, @NumeroFabrica2,@Origen2)

select @sw_paso = 0
FETCH NEXT FROM ARTICULOS into @IdLGS1, @Grupo1, @Secuencia1, @NumeroFabrica1, @Ori1, @IdLGS2, @Grupo2, @Secuencia2, @NumeroFabrica2, @Ori2

end
close ARTICULOS
DEALLOCATE ARTICULOS
SELECT Grupo1 ,Secuencia1 , NumeroFabrica1 , Origen1 ,
Grupo2 ,Secuencia2 , NumeroFabrica2 , Origen2
FROM #NumerosFabDupDifAsig
ORDER BY NumeroFabrica1 Asc,
NumeroFabrica2 Asc
GO