Estoy intentando hacer un Insert de varias tablas a la vez y para ello tengo creado este procedimiento:
Código SQL:
Ver original
CREATE PROCEDURE P_OfcContratosFormacion_InsertExt( @IDOficina INT, @IDACEmpresa INT, @IDACAlumno INT, @IDCFOcupacion INT, @FchInicio DATE, @FchFin DATE, @NumContrato INT, @Enviado bit, @Alta bit, @IDContratoFormacion INT OUTPUT ) AS SET NOCOUNT ON DECLARE @FchContrato DATE; DECLARE @FchVariable DATE; SET @FchContrato=@FchInicio; SET @FchVariable=@FchContrato; SET @FchVariable=DATEADD(YEAR, 1,@FchVariable) SET @FchVariable=DATEADD(DAY, -1,@FchVariable) INSERT INTO [OfcContratosFormacion] ([IDOficina],[IDACEmpresa],[IDACAlumno],[IDCFOcupacion],[FchCambioBonificacion]) VALUES (@IDOficina, @IDACEmpresa, @IDACAlumno, @IDCFOcupacion, @FchVariable) SET @IDContratoFormacion = SCOPE_IDENTITY() IF @IDContratoFormacion IS NOT NULL BEGIN INSERT INTO [OfcContratosFormacion_DatosCtto] ([AnioContrato],[IDContratoFormacion],[FchInicio],[FchFin],[NumContrato],[Enviado], [Alta],[FchEntrada]) VALUES (0,@IDContratoFormacion, @FchInicio, @FchFin, @NumContrato, @Enviado, @Alta, GETDATE()) INSERT INTO [OfcContratosFormacion_DatosCtto] ([AnioContrato],[IDContratoFormacion]) VALUES (1,@IDContratoFormacion) INSERT INTO [OfcContratosFormacion_DatosCtto] ([AnioContrato],[IDContratoFormacion]) VALUES (2,@IDContratoFormacion) WHILE DATEDIFF(MONTH, @FchFin, @FchContrato)>0 BEGIN SET @FchVariable=@FchContrato SET @FchVariable=DATEADD(MONTH, 2, @FchVariable) IF MONTH(@FchVariable)!=2 BEGIN SET @FchVariable=DATEADD(DAY, 30-DAY(@FchVariable), @FchVariable) END ELSE BEGIN SET @FchVariable=DATEADD(DAY, 28-DAY(@FchVariable), @FchVariable) END INSERT INTO [OfcContratosFormacion_DatosCtto_Mes] ([FchContrato],[IDContratoFormacion],[FchLiquidacionSystem],[FchPagoSystem],[FchLiquidacionResto],[FchPagoResto],[Horas]) VALUES (@FchContrato,@IDContratoFormacion,DATEADD(MONTH,2,@FchVariable),@FchContrato,@FchContrato,@FchContrato,5) SELECT DATEADD(MONTH, 1, @FchContrato) END END
Pero después de ejecutarlo me doy cuenta de que no hace el while ya que la tabla a la que apunta sigue vacía. Seguro que es una obviedad, pero no lo veo, ¿Alguien ve el fallo?