Buenas a todos,
Estoy intentando hacer un Insert de varias tablas a la vez y para ello tengo creado este procedimiento:
Código SQL:
Ver originalCREATE 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?