ciao!

scusate la domanda probabilmente stupida, ma non riesco a capire dove posizionare un blocco IF/ELSE.
ovunque lo metto mi da errore.
l'errore è generico, e mi dice solo che c'è un problema di sintassi.
se levo il blocco IF/ELSE invece nessun problema.
questo il codice dell'ultimo tentativo:
codice:
USE [....]
GO
/****** Object:  StoredProcedure [dbo].[usp_DuplicaScadenzario]    Script Date: 24/11/2019 10:54:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[usp_DuplicaScadenzario] @idScadenzario INT
    ,@TipoDuplicazione CHAR(2)
    ,@ERROR_NUMBER AS INT = 0 OUTPUT
    ,@ERROR_SEVERITY AS INT = 0 OUTPUT
    ,@ERROR_STATE AS INT = 0 OUTPUT
    ,@ERROR_PROCEDURE AS NVARCHAR(126) = '' OUTPUT
    ,@ERROR_LINE AS INT = 0 OUTPUT
    ,@ERROR_MESSAGE AS NVARCHAR(4000) = '' OUTPUT
    ,@NUMROWSAFFECTED AS INT = NULL OUTPUT
AS
BEGIN
    -- SET NOCOUNT ON;

    DECLARE @max_year INT = 2021
    DECLARE @year_now INT = YEAR(GETDATE())
    DECLARE @cnt_year INT = 0
    DECLARE @datepart VARCHAR(50) = ''

    IF @TipoDuplicazione ='1Y'
        SET @datepart = 'YEAR'
    ELSE IF  @TipoDuplicazione ='1M'
        SET @datepart = 'MONTH'
    ELSE IF  @TipoDuplicazione ='1S'
        SET @datepart = 'WEEK'
    ELSE IF  @TipoDuplicazione ='1d'
        SET @datepart = 'DAY'
    END

    BEGIN TRY
        WHILE @year_now < @max_year
        BEGIN
            SET @year_now = @year_now + 1;
            SET @cnt_year = @cnt_year + 1;

            INSERT INTO Scadenzario (
                codTabella
                ,TipoTabella
                ,DataInizio
                ,DataFine
                ,TipoScadenza
                ,Promemoria
                ,Tipologia
                ,Riferimento
                ,Eseguito
                )
            SELECT codTabella
                ,TipoTabella
                ,DATEADD(YEAR, @cnt_year, DataInizio)
                ,DATEADD(YEAR, @cnt_year, DataFine)
                ,TipoScadenza
                ,Promemoria
                ,Tipologia
                ,Riferimento
                ,Eseguito
            FROM Scadenzario
            WHERE idScadenzario = @idScadenzario;
        END;
    END TRY

    BEGIN CATCH
        PRINT 'CATCH:' + ERROR_MESSAGE()

        -- Rollback any active or uncommittable transactions before
        IF @@TRANCOUNT > 0
            ROLLBACK TRANSACTION;

        SELECT @ERROR_NUMBER = ERROR_NUMBER()
            ,@ERROR_SEVERITY = ERROR_SEVERITY()
            ,@ERROR_STATE = ERROR_STATE()
            ,@ERROR_PROCEDURE = ERROR_PROCEDURE()
            ,@ERROR_LINE = ERROR_LINE()
            ,@ERROR_MESSAGE = ERROR_MESSAGE()
    END CATCH;
END