CREATE PROCEDURE C6StagingPeriodico.RP_W6LogBatch
    @BatchName NVARCHAR(100)
AS
BEGIN
    DECLARE @BatchID INT;
    -- Trova l'ultimo batch in esecuzione con lo stesso nome
    SELECT TOP 1 @BatchID = BatchID
    FROM C6StagingPeriodico.W6LogBatch
    WHERE BatchName = @BatchName AND EndDate IS NULL
    ORDER BY BatchID DESC;
    IF @BatchID IS NOT NULL
    BEGIN
        -- È la fine del batch
        -- Aggiorna la data di fine, lo status e calcola il delta in minuti
        UPDATE C6StagingPeriodico.W6LogBatch
        SET EndDate = GETDATE(),
            Status = 'OK',
            DeltaMinutes = DATEDIFF(MINUTE, StartDate, GETDATE())
        WHERE BatchID = @BatchID;
        -- Output o messaggio di conferma per la fine del batch
        SELECT 'Log entry updated for BatchID ' + CAST(@BatchID AS NVARCHAR(20)) + '.' +
               ' Batch "' + @BatchName + '" ended.';
    END
    ELSE
    BEGIN
        -- È l'inizio del batch
        -- Inserisci i dati relativi al log nella tabella C6StagingPeriodico.W6LogBatch
        INSERT INTO C6StagingPeriodico.W6LogBatch (BatchName, Status, StartDate)
        VALUES (@BatchName, 'In esecuzione', GETDATE());
        -- Ottieni l'ID del batch appena inserito
        SET @BatchID = SCOPE_IDENTITY();
        -- Output o messaggio di conferma per l'inizio del batch
        SELECT 'Log entry added for BatchID ' + CAST(@BatchID AS NVARCHAR(20)) + '.' +
               ' Batch "' + @BatchName + '" started.';
    END
END;