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

Rispondi quotando
