CREATE procedure [C6MartPeriodico].[GESTIONE_INSERT_ELABORAZIONE_ZIP]
AS
BEGIN 
		DECLARE @IDElaborazioneZip int
		-- Controllo se esiste un'ultima elaborazione zip non terminata.
		SELECT @IDElaborazioneZip = IDElaborazioneZip
		FROM [C6MartPeriodico].ELABORAZIONI_ZIP
		WHERE  IDElaborazioneZip = (SELECT MAX(IDElaborazioneZip)
									FROM [C6MartPeriodico].ELABORAZIONI_ZIP)
				AND DataFine IS NULL
		IF @IDElaborazioneZip IS NULL
		BEGIN
			BEGIN TRY
				BEGIN TRANSACTION INSERT_ELABORAZIONE_ZIP
				INSERT INTO [C6MartPeriodico].[ELABORAZIONI_ZIP]
					   ([DataInizio])
				VALUES
						(GETDATE())
				COMMIT TRANSACTION INSERT_ELABORAZIONE_ZIP
				SELECT SCOPE_IDENTITY() AS IDElaborazioneZIP
			END TRY
			BEGIN CATCH
				ROLLBACK TRANSACTION INSERT_ELABORAZIONE_ZIP
				SELECT 0 AS IDElaborazioneZIP
			END CATCH
		END
		ELSE
			SELECT @IDElaborazioneZip AS IDElaborazioneZIP
END