soy principiante en sql y estoy realizando una base de datos. Todo iba bastante bien hasta que me atasqué con la última tabla. Mencionar que estoy utuilizando SQL Server 2014.
Lo que intento realizar es lo siguiente: tengo varias tablas: Envios, Prevision Produccion y Stocks Futuros.
En Prevision Produccion estoy haciendo un desencadenador, para que cada vez que se modifica la info se actualize la tabla Stocks futuros mediente la formula: Stocks Futuros=Prevision Produccion - Envios
Por ese motivo he intentado "traducir" este pseudocodigo para llegar a este objetivo:
Mientras contador<numero filas tabla Prevision Produccion {
Si pieza existe en stocks futuros
lunes=lunes+ Stock_real + [Prevision Produccion].lunes_actual -Envios.lunes
martes=....
Si pieza NO existe en stocks futuros
lunes= Stock_real + [Prevision Produccion].lunes_actual -Envios.lunes
martes=....
contador++
}
Aqui os pongo mi codigo a ver si me podeis echar una mano:
Código SQL:
Ver original
USE [Logistica] GO /****** Object: Trigger [dbo].[Stocks_futuros_Prevision_produccion] Script Date: 07/07/2014 12:07:29 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[Stocks_futuros_Prevision_produccion] ON [dbo].[Prevision Produccion] FOR INSERT AS DECLARE @i INT DECLARE @srtn NCHAR(50) SET @i=0 WHILE (@i) <(SELECT COUNT(*) FROM [Prevision Produccion]) BEGIN SELECT * FROM [Prevision Produccion] WHERE [Prevision Produccion].indice= @i SET @srtn= (SELECT Sorten FROM [Prevision Produccion] WHERE [Prevision Produccion].indice= @i) IF (SELECT lunes, martes, miercoles, jueves, viernes, sabado, domingo_SEM_ACTUAL, lunes_proximo, martes_proximo, miercoles_proximo, jueves_proximo, viernes_proximo, sabado_proximo, [domingo_proximo (+1 SEM)], [Semana_actual+2], [Semana_actual+3], [Semana_actual+4], [Semana_actual+5], [Semana_actual+6], [Semana_actual+7] FROM [Stocks Futuros] WHERE [Stocks Futuros].Sorten= @srtn) IS NOT NULL UPDATE [Stocks Futuros] SET lunes = [Stocks Futuros].lunes + Stock_real +lunes_actual - [Envios].lunes, martes = [Stocks Futuros].martes + [Stocks Futuros].lunes + inserted.martes_actual - Envios.martes, miercoles = [Stocks Futuros].miercoles + [Stocks Futuros].martes + inserted.miercoles_actual - Envios.miercoles, jueves = [Stocks Futuros].jueves + [Stocks Futuros].miercoles + inserted.jueves_actual - Envios.jueves, viernes = [Stocks Futuros].viernes + [Stocks Futuros].jueves + inserted.viernes_actual - Envios.viernes, sabado = [Stocks Futuros].sabado + [Stocks Futuros].viernes + inserted.sabado_actual - Envios.sabado, domingo_SEM_ACTUAL = [Stocks Futuros].domingo_SEM_ACTUAL + [Stocks Futuros].sabado + inserted.domingo_actual - Envios.domingo_SEM_ACTUAL, lunes_proximo = [Stocks Futuros].lunes_proximo+ [Stocks Futuros].domingo_SEM_ACTUAL + inserted.Lunes_proximo - Envios.unidades8, martes_proximo = [Stocks Futuros].martes_proximo + [Stocks Futuros].lunes_proximo + inserted.Martes_proximo - Envios.unidades9, miercoles_proximo = [Stocks Futuros].miercoles_proximo+ [Stocks Futuros].martes_proximo + inserted.Miercoles_proximo - Envios.unidades10, jueves_proximo = [Stocks Futuros].jueves_proximo + [Stocks Futuros].miercoles_proximo + inserted.Jueves_proximo - Envios.unidades11, viernes_proximo = [Stocks Futuros].viernes_proximo + [Stocks Futuros].jueves_proximo + inserted.Viernes_proximo - Envios.unidades12, sabado_proximo = [Stocks Futuros].sabado_proximo + [Stocks Futuros].viernes_proximo + inserted.Sabado_proximo - Envios.unidades13, [domingo_proximo (+1 SEM)] = [Stocks Futuros].[domingo_proximo (+1 SEM)] + [Stocks Futuros].sabado_proximo + inserted.Domingo_proximo - Envios.[unidades14_+1 SEM], [Semana_actual+2] = [Stocks Futuros].[Semana_actual+2] + [Stocks Futuros].[domingo_proximo (+1 SEM)] + inserted.[Semana_actual+2] - (Envios.unidades15 + Envios.unidades16+ Envios.unidades17 + Envios.unidades18 + Envios.unidades19 + Envios.unidades20 + Envios.[unidades21_+2 SEM]), [Semana_actual+3] = [Stocks Futuros].[Semana_actual+3] + [Stocks Futuros].[Semana_actual+2] + inserted.[Semana_actual+3] - (Envios.unidades22 + Envios.unidades23+ Envios.unidades24 + Envios.unidades25 + Envios.unidades26 + Envios.unidades27 + Envios.[unidades28_+3 SEM]), [Semana_actual+4] = [Stocks Futuros].[Semana_actual+4] + [Stocks Futuros].[Semana_actual+3] + inserted.[Semana_actual+4] - (Envios.unidades29 + Envios.unidades30+ Envios.unidades31 + Envios.unidades32 + Envios.unidades33 + Envios.unidades34 + Envios.[unidades35_+4 SEM]), [Semana_actual+5] = [Stocks Futuros].[Semana_actual+5] + [Stocks Futuros].[Semana_actual+4] + inserted.[Semana_actual+5] - (Envios.unidades36 + Envios.unidades37+ Envios.unidades38 + Envios.unidades39 + Envios.unidades40 + Envios.unidades41 + Envios.[unidades42_+5 SEM]), [Semana_actual+6] = [Stocks Futuros].[Semana_actual+6] + [Stocks Futuros].[Semana_actual+5] + inserted.[Semana_actual+6] - (Envios.unidades43 + Envios.unidades44+ Envios.unidades45 + Envios.unidades46 + Envios.unidades47 + Envios.unidades48 + Envios.[unidades49_+6 SEM]), [Semana_actual+7] = [Stocks Futuros].[Semana_actual+7] + [Stocks Futuros].[Semana_actual+6] + inserted.[Semana_actual+7] - (Envios.unidades50 + Envios.unidades51+ Envios.unidades52 + Envios.unidades53 + Envios.unidades54 + Envios.unidades55 + Envios.[unidades56_+7 SEM]) FROM [Envios] INNER JOIN inserted ON [Envios].Sorten = inserted.Sorten ELSE UPDATE [Stocks Futuros] SET lunes = Stock_real +lunes_actual - [Envios].lunes, martes = [Stocks Futuros].lunes + inserted.martes_actual - Envios.martes, miercoles = [Stocks Futuros].martes + inserted.miercoles_actual - Envios.miercoles, jueves = [Stocks Futuros].miercoles + inserted.jueves_actual - Envios.jueves, viernes = [Stocks Futuros].jueves + inserted.viernes_actual - Envios.viernes, sabado = [Stocks Futuros].viernes + inserted.sabado_actual - Envios.sabado, domingo_SEM_ACTUAL = [Stocks Futuros].sabado + inserted.domingo_actual - Envios.domingo_SEM_ACTUAL, lunes_proximo = [Stocks Futuros].domingo_SEM_ACTUAL + inserted.Lunes_proximo - Envios.unidades8, martes_proximo = [Stocks Futuros].lunes_proximo + inserted.Martes_proximo - Envios.unidades9, miercoles_proximo = [Stocks Futuros].martes_proximo + inserted.Miercoles_proximo - Envios.unidades10, jueves_proximo = [Stocks Futuros].miercoles_proximo + inserted.Jueves_proximo - Envios.unidades11, viernes_proximo = [Stocks Futuros].jueves_proximo + inserted.Viernes_proximo - Envios.unidades12, sabado_proximo = [Stocks Futuros].viernes_proximo + inserted.Sabado_proximo - Envios.unidades13, [domingo_proximo (+1 SEM)] = [Stocks Futuros].sabado_proximo + inserted.Domingo_proximo - Envios.[unidades14_+1 SEM], [Semana_actual+2] = [Stocks Futuros].[domingo_proximo (+1 SEM)] + inserted.[Semana_actual+2] - (Envios.unidades15 + Envios.unidades16+ Envios.unidades17 + Envios.unidades18 + Envios.unidades19 + Envios.unidades20 + Envios.[unidades21_+2 SEM]), [Semana_actual+3] = [Stocks Futuros].[Semana_actual+2] + inserted.[Semana_actual+3] - (Envios.unidades22 + Envios.unidades23+ Envios.unidades24 + Envios.unidades25 + Envios.unidades26 + Envios.unidades27 + Envios.[unidades28_+3 SEM]), [Semana_actual+4] = [Stocks Futuros].[Semana_actual+3] + inserted.[Semana_actual+4] - (Envios.unidades29 + Envios.unidades30+ Envios.unidades31 + Envios.unidades32 + Envios.unidades33 + Envios.unidades34 + Envios.[unidades35_+4 SEM]), [Semana_actual+5] = [Stocks Futuros].[Semana_actual+4] + inserted.[Semana_actual+5] - (Envios.unidades36 + Envios.unidades37+ Envios.unidades38 + Envios.unidades39 + Envios.unidades40 + Envios.unidades41 + Envios.[unidades42_+5 SEM]), [Semana_actual+6] = [Stocks Futuros].[Semana_actual+5] + inserted.[Semana_actual+6] - (Envios.unidades43 + Envios.unidades44+ Envios.unidades45 + Envios.unidades46 + Envios.unidades47 + Envios.unidades48 + Envios.[unidades49_+6 SEM]), [Semana_actual+7] = [Stocks Futuros].[Semana_actual+6] + inserted.[Semana_actual+7] - (Envios.unidades50 + Envios.unidades51+ Envios.unidades52 + Envios.unidades53 + Envios.unidades54 + Envios.unidades55 + Envios.[unidades56_+7 SEM]) FROM [Envios] INNER JOIN inserted ON [Envios].Sorten = inserted.Sorten END IF @i=@i+1 END
y me marca este mensaje
Mens 156, Nivel 15, Estado 1, Procedimiento Stocks_futuros_Prevision_produccion, Línea 87
Sintaxis incorrecta cerca de la palabra clave 'WHILE'.
Sabeis por que?? Se os ocurre alguna otra solucion??
Muchas gracias de antemano
Raul