Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/07/2014, 08:02
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Error cerrar bucle while

primero, porque la aseveracion de que eres principiante??? con eso quieres causar que? lastima, que nos apiademos de ti? que te comprendamos??? ahora tu problema es sencillo:

Código SQL:
Ver original
  1. USE [Logistica]
  2. GO
  3. /****** Object: Trigger [dbo].[Stocks_futuros_Prevision_produccion] Script Date: 07/07/2014 12:07:29 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9.  
  10. ALTER TRIGGER [dbo].[Stocks_futuros_Prevision_produccion]
  11. ON [dbo].[Prevision Produccion]
  12. FOR INSERT
  13. AS
  14.  
  15. DECLARE @i INT
  16. DECLARE @srtn NCHAR(50)
  17.  
  18. SET @i=0
  19.  
  20. WHILE (@i< (SELECT COUNT(*) FROM [Prevision Produccion]) )
  21. BEGIN
  22.  
  23. SELECT * FROM [Prevision Produccion] WHERE [Prevision Produccion].indice= @i
  24.  
  25. SET @srtn= (SELECT Sorten FROM [Prevision Produccion] WHERE [Prevision Produccion].indice= @i)
  26.  
  27. 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
  28. BEGIN
  29. UPDATE [Stocks Futuros]
  30.  
  31. SET lunes = [Stocks Futuros].lunes + Stock_real +lunes_actual - [Envios].lunes,
  32. martes = [Stocks Futuros].martes + [Stocks Futuros].lunes + inserted.martes_actual - Envios.martes,
  33. miercoles = [Stocks Futuros].miercoles + [Stocks Futuros].martes + inserted.miercoles_actual - Envios.miercoles,
  34. jueves = [Stocks Futuros].jueves + [Stocks Futuros].miercoles + inserted.jueves_actual - Envios.jueves,
  35. viernes = [Stocks Futuros].viernes + [Stocks Futuros].jueves + inserted.viernes_actual - Envios.viernes,
  36. sabado = [Stocks Futuros].sabado + [Stocks Futuros].viernes + inserted.sabado_actual - Envios.sabado,
  37. domingo_SEM_ACTUAL = [Stocks Futuros].domingo_SEM_ACTUAL + [Stocks Futuros].sabado + inserted.domingo_actual - Envios.domingo_SEM_ACTUAL,
  38. lunes_proximo = [Stocks Futuros].lunes_proximo+ [Stocks Futuros].domingo_SEM_ACTUAL + inserted.Lunes_proximo - Envios.unidades8,
  39. martes_proximo = [Stocks Futuros].martes_proximo + [Stocks Futuros].lunes_proximo + inserted.Martes_proximo - Envios.unidades9,
  40. miercoles_proximo = [Stocks Futuros].miercoles_proximo+ [Stocks Futuros].martes_proximo + inserted.Miercoles_proximo - Envios.unidades10,
  41. jueves_proximo = [Stocks Futuros].jueves_proximo + [Stocks Futuros].miercoles_proximo + inserted.Jueves_proximo - Envios.unidades11,
  42. viernes_proximo = [Stocks Futuros].viernes_proximo + [Stocks Futuros].jueves_proximo + inserted.Viernes_proximo - Envios.unidades12,
  43. sabado_proximo = [Stocks Futuros].sabado_proximo + [Stocks Futuros].viernes_proximo + inserted.Sabado_proximo - Envios.unidades13,
  44. [domingo_proximo (+1 SEM)] = [Stocks Futuros].[domingo_proximo (+1 SEM)] + [Stocks Futuros].sabado_proximo + inserted.Domingo_proximo - Envios.[unidades14_+1 SEM],
  45. [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]),
  46. [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]),
  47. [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]),
  48. [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]),
  49. [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]),
  50. [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])
  51.  
  52. FROM [Envios] INNER JOIN inserted
  53. ON [Envios].Sorten = inserted.Sorten
  54.  
  55. END
  56. ELSE
  57. BEGIN
  58. UPDATE [Stocks Futuros]
  59.  
  60. SET lunes = Stock_real +lunes_actual - [Envios].lunes,
  61. martes = [Stocks Futuros].lunes + inserted.martes_actual - Envios.martes,
  62. miercoles = [Stocks Futuros].martes + inserted.miercoles_actual - Envios.miercoles,
  63. jueves = [Stocks Futuros].miercoles + inserted.jueves_actual - Envios.jueves,
  64. viernes = [Stocks Futuros].jueves + inserted.viernes_actual - Envios.viernes,
  65. sabado = [Stocks Futuros].viernes + inserted.sabado_actual - Envios.sabado,
  66. domingo_SEM_ACTUAL = [Stocks Futuros].sabado + inserted.domingo_actual - Envios.domingo_SEM_ACTUAL,
  67. lunes_proximo = [Stocks Futuros].domingo_SEM_ACTUAL + inserted.Lunes_proximo - Envios.unidades8,
  68. martes_proximo = [Stocks Futuros].lunes_proximo + inserted.Martes_proximo - Envios.unidades9,
  69. miercoles_proximo = [Stocks Futuros].martes_proximo + inserted.Miercoles_proximo - Envios.unidades10,
  70. jueves_proximo = [Stocks Futuros].miercoles_proximo + inserted.Jueves_proximo - Envios.unidades11,
  71. viernes_proximo = [Stocks Futuros].jueves_proximo + inserted.Viernes_proximo - Envios.unidades12,
  72. sabado_proximo = [Stocks Futuros].viernes_proximo + inserted.Sabado_proximo - Envios.unidades13,
  73. [domingo_proximo (+1 SEM)] = [Stocks Futuros].sabado_proximo + inserted.Domingo_proximo - Envios.[unidades14_+1 SEM],
  74. [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]),
  75. [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]),
  76. [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]),
  77. [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]),
  78. [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]),
  79. [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])
  80.  
  81. FROM [Envios] INNER JOIN inserted
  82. ON [Envios].Sorten = inserted.Sorten
  83. END
  84. END
  85.  
  86. SET @i=@i+1
  87. END

Primero el while no se usa como en programacion, segundo no lleva end_if una condicion if solo begin y end, te recomiendo que cuando sea mas de una linea de codigo pongas en tus condiciones begin y end....

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me