﻿set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/*************************************
* STORED PROCEDURE stp_ODL_updateChild
* 	aggiorna le tabelle che dipendono dai dati dell'ODL
*
* modif.:	S.E.L.
* il:		2013.03.15
**************************************/
create PROCEDURE stp_ODL_updateChild
(
    @IdxMacchina        NVARCHAR(50),
    @IdxODL             INT,
	@CodArticoloOld     NVARCHAR(50),
	@DataInizioOld      DATETIME,
	@DataFineOld        DATETIME,
	@CodArticoloNew     NVARCHAR(50),
	@DataInizioNew      DATETIME,
	@DataFineNew        DATETIME
)
AS

BEGIN TRAN
    
    /*****************************************************************************************************
    * AGGIORNO TUTTO!
    * - DatiConfermati
    * - DatiMacchine
    * - DatiProduzione
    * - DiarioDiBordo
    * - EventList
    * - StatoMacchine
    * - TempiCicloRilevati
    *****************************************************************************************************/
	
    -- DatiConfermati
    UPDATE  DatiConfermati
    SET     CodArticolo = @CodArticoloNew
    WHERE   CodArticolo = @CodArticoloOld
        AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )  
    
    -- DatiMacchine
    UPDATE  DatiMacchine
    SET     kanban_A = CASE WHEN kanban_A = 'KA'+  @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_A END
           ,kanban_B = CASE WHEN kanban_B = 'KA'+  @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_B END
    WHERE   IdxMacchina = @IdxMacchina
    
    -- DatiProduzione
    UPDATE  DatiProduzione
    SET     CodArticolo = @CodArticoloNew
           ,IdxODL = @IdxODL
    WHERE   IdxMacchina = @IdxMacchina
        AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )  
        
    -- DiarioDiBordo
    UPDATE  DiarioDiBordo
    SET     KanbanCode = @CodArticoloNew
           ,MatricolaKanban = 'KA'+@CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
        AND KanbanCode = @CodArticoloOld
        
    -- EventList
    UPDATE  EventList
    SET     MatricolaKanban = 'KA'+@CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
        AND MatricolaKanban = 'KA'+@CodArticoloOld

    -- StatoMacchine
    UPDATE  StatoMacchine
    SET     KanbanCode = @CodArticoloNew
           ,MatricolaKanban = 'KA'+@CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
        AND KanbanCode = @CodArticoloOld
        
    -- TempiCicloRilevati
    UPDATE  TempiCicloRilevati
    SET     CodArticolo = @CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( DataOraRif >= @DataInizioNew AND DataOraRif <= ISNULL(@DataFineNew, GETDATE()) )  
        AND CodArticolo = @CodArticoloOld

COMMIT TRAN


RETURN
go

commit;
go


set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/***************************************************
* Trigger trg_ODL_updateMSE
*
* fa un refresh completo della MSE ad ogni intervento sull'ODL
*
* modificato: S.E.L.
* 2013.03.14
*
***************************************************/
create TRIGGER trg_ODL_updateAllChild
ON ODL
FOR UPDATE
AS

-- dichiarazione variabili
DECLARE @IdxMacchina    NVARCHAR(50)
DECLARE @IdxODL         INT
DECLARE @CodArtOld      NVARCHAR(50)
DECLARE @CodArtNew      NVARCHAR(50)
DECLARE @DataInizioOld  DATETIME
DECLARE @DataInizioNew  DATETIME
DECLARE @DataFineOld    DATETIME
DECLARE @DataFineNew    DATETIME

-- calcolo valori articolo, date validità...
SELECT  @CodArtOld=CodArticolo, @DataInizioOld=DataInizio, @DataFineOld=DataFine FROM deleted
SELECT  @IdxODL=IdxODL, @IdxMacchina=IdxMacchina, @CodArtNew=CodArticolo, @DataInizioNew=DataInizio, @DataFineNew=DataFine FROM inserted

-- PRIMA REGOLA: proseguo SOLO SE la data inizio è NOT NULL
IF(NOT (@DataInizioNew IS NULL))
    BEGIN

        /***************************************************************
        * Eseguo SOLO SE: 
        * - faccio un update del kanban e se il mio ODL ha un periodo di validità (inizio non nullo)
        * - cambia inizio periodo validità
        * - cambia fine validità (MA NON ERA NULL!!!)
        ***************************************************************/
        IF( ( UPDATE(CodArticolo) AND @CodArtOld<>@CodArtNew ) OR ( UPDATE(DataInizio) AND @DataInizioOld<>@DataInizioNew ) OR ( UPDATE(DataFine) AND @DataFineOld<>@DataFineNew AND NOT (@DataFineOld IS NULL) ) )
            BEGIN
                exec stp_ODL_updateChild @IdxMacchina, @IdxODL, @CodArtOld, @DataInizioOld, @DataFineOld, @CodArtNew, @DataInizioNew, @DataFineNew
            END

    END
-- eseguo RICALCOLO tabella stato expl
EXEC stp_MSE_getData 0
go

/***************************************************
* Trigger trg_ODL_updateMSE
*
* fa un refresh completo della MSE ad ogni insert  di ODL
*
* modificato: S.E.L.
* 2013.03.14
*
***************************************************/
alter TRIGGER trg_ODL_updateMSE
ON ODL
FOR INSERT
AS

-- eseguo RICALCOLO tabella stato expl
 EXEC stp_MSE_getData 0
go

commit;
go


set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/*************************************
* STORED PROCEDURE stp_ODL_updateChild
* 	aggiorna le tabelle che dipendono dai dati dell'ODL
*
* modif.:	S.E.L.
* il:		2013.03.15
**************************************/
alter PROCEDURE stp_ODL_updateChild
(
    @IdxMacchina        NVARCHAR(50),
    @IdxODL             INT,
	@CodArticoloOld     NVARCHAR(50),
	@DataInizioOld      DATETIME,
	@DataFineOld        DATETIME,
	@CodArticoloNew     NVARCHAR(50),
	@DataInizioNew      DATETIME,
	@DataFineNew        DATETIME
)
AS

BEGIN TRAN
    
    /*****************************************************************************************************
    * AGGIORNO TUTTO!
    * - DatiConfermati
    * - DatiMacchine
    * - DatiProduzione
    * - DiarioDiBordo
    * - EventList
    * - StatoMacchine
    * - TempiCicloRilevati
    *****************************************************************************************************/
	
    -- DatiConfermati
    UPDATE  DatiConfermati
    SET     CodArticolo = @CodArticoloNew
    WHERE   CodArticolo = @CodArticoloOld
        AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )  
    
    -- DatiMacchine, SOLO SE è ODL corrente
    IF(@DataFineNew IS NULL)
        BEGIN
            UPDATE  DatiMacchine
            SET     kanban_A = CASE WHEN kanban_A = 'KA'+  @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_A END
                   ,kanban_B = CASE WHEN kanban_B = 'KA'+  @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_B END
            WHERE   IdxMacchina = @IdxMacchina
        END 

    -- DatiProduzione
    UPDATE  DatiProduzione
    SET     CodArticolo = @CodArticoloNew
           ,IdxODL = @IdxODL
    WHERE   IdxMacchina = @IdxMacchina
        AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )  
        
    -- DiarioDiBordo
    UPDATE  DiarioDiBordo
    SET     KanbanCode = @CodArticoloNew
           ,MatricolaKanban = 'KA'+@CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
        AND KanbanCode = @CodArticoloOld
        
    -- EventList
    UPDATE  EventList
    SET     MatricolaKanban = 'KA'+@CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
        AND MatricolaKanban = 'KA'+@CodArticoloOld

    -- StatoMacchine
    UPDATE  StatoMacchine
    SET     KanbanCode = @CodArticoloNew
           ,MatricolaKanban = 'KA'+@CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
        AND KanbanCode = @CodArticoloOld
        
    -- TempiCicloRilevati
    UPDATE  TempiCicloRilevati
    SET     CodArticolo = @CodArticoloNew
    WHERE   IdxMacchina = @IdxMacchina
        AND ( DataOraRif >= @DataInizioNew AND DataOraRif <= ISNULL(@DataFineNew, GETDATE()) )  
        AND CodArticolo = @CodArticoloOld

COMMIT TRAN


RETURN
go

commit;
go


drop trigger trg_ODL_updateMSE;
go

set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/*************************************
* STORED PROCEDURE stp_MSE_getData
* 	tabella stato attuale macchine (da mostrare)
*
* modif.:	S.E.L. - 2013.02.28
**************************************/
alter PROCEDURE stp_MSE_getData
(
    @maxAgeSec  INT -- soglia di "vecchiaia" del dato massima accettabile dopo cui parte ricalcolo, in millisec, se < 1000 ignoro!
)
AS

-- cerco dato + recente
DECLARE @adesso DATETIME = GETDATE()
DECLARE @lastUpdate DATETIME

SELECT TOP 1 @lastUpdate=ISNULL(lastUpdate, '2000/01/01') FROM MappaStatoExpl ORDER BY lastUpdate DESC
SELECT @lastUpdate= ISNULL(@lastUpdate, '2000/01/01')

-- solo se sup ai 1000 ms! oppure zero...
IF(@maxAgeSec > 1000 OR @maxAgeSec=0)
    BEGIN
        -- dato vecchio! aggiorno!
        IF(DATEDIFF(s,@lastUpdate,@adesso)*1000 > @maxAgeSec)
            BEGIN
                -- truncate table precedente
                TRUNCATE TABLE MappaStatoExpl
        
                ;WITH cteODL AS
                (
	                SELECT TOP 1 * FROM ODL
                    WHERE IdxODL IN
                    (
                    SELECT IdxODL
                    FROM ODL
                    WHERE DataFine IS NULL

                    UNION

                    SELECT MAX(IdxODL)
                    FROM ODL
                    GROUP BY IdxMacchina
                    )
                )
                -- inserisco di nuovo i dati
                INSERT INTO MappaStatoExpl(lastUpdate, IdxMacchina, CodMacchina, Nome, url, IdxODL, CodArticolo, NumPezzi, TCAssegnato, DataInizioODL)
                SELECT      @adesso, ma.IdxMacchina, ma.CodMacchina, ma.Nome, url, ISNULL(o.IdxODL,0), ISNULL(o.CodArticolo,'-'), ISNULL(o.NumPezzi,0), ISNULL(o.TCAssegnato,0), ISNULL(o.DataInizio,'2000/01/01')
                FROM	    Macchine ma LEFT OUTER JOIN cteODL o ON ma.IdxMacchina=o.IdxMacchina
                WHERE       NOT (locazione IS NULL) 
                            --AND ( (ISNULL(o.IdxODL,0) = 0) OR ((o.DataFine IS NULL) AND NOT (o.DataInizio IS NULL)) )
                ORDER BY    ma.locazione

                -- dichiaro le 2 table variables che userò x caricare i dati di stato
                DECLARE @tvStato TABLE (
	                IdxMacchina INT NULL,
	                idxStato    INT NULL,
                    DescrizioneStato    NVARCHAR(50),
                    Semaforo    NVARCHAR(50),
	                Minuti      INT NULL
                ) 
                DECLARE @tvODL TABLE (
	                IdxODL      INT NULL,
	                CodArticolo NVARCHAR(50),
	                DescArticolo NVARCHAR(50),
                    IdxMacchina INT NULL,
	                CodMacchina NVARCHAR(50),
                    Nome        NVARCHAR(50),
                    NumPezzi    INT NULL,
                    TCAssegnato DECIMAL(18,8),
                    DataInizio  DATETIME,
                    DataFine    DATETIME
                ) 
                DECLARE @tvProd TABLE (
	                IdxMacchina INT NULL,
	                CodArticolo NVARCHAR(50),
                    PezziLanciati INT NULL,
                    PezziProd   INT NULL,
                    PezziConf   INT NULL,
                    TCAssegnato DECIMAL(18,8),
                    CodOperatore INT NULL,
                    TempoOn     DECIMAL(18,8),
                    TempoAuto   DECIMAL(18,8),
                    TempoRun    DECIMAL(18,8),
                    TCMedio     DECIMAL(18,8),
                    TCLav       DECIMAL(18,8),
                    TCEff       DECIMAL(18,8),
                    TCMedioRT   DECIMAL(18,8),
                    TCLavRT     DECIMAL(18,8),
                    TCEffRT     DECIMAL(18,8)
                ) 

                DECLARE @numRows INT = 0
                DECLARE @currRow INT = 1
                DECLARE @IdxMacchina INT = 0

                SET @numRows = ISNULL((SELECT COUNT(*) FROM MappaStatoExpl),0)

                -- carico altri dati con ciclo while
                WHILE (@currRow <= @numRows)
                    BEGIN
                        -- macchina corrente!
                        SELECT @IdxMacchina = IdxMacchina FROM MappaStatoExpl WHERE RowNum = @currRow

                        -- popolo tab stati
                        INSERT  @tvStato(idxStato, Minuti)
                        EXEC    stp_repDonati_getLastStatoDurataMacchina @IdxMacchina, 0.1
                        -- fix dati mancanti
                        UPDATE  tvs
                        SET     tvs.IdxMacchina = @IdxMacchina
                               ,tvs.Semaforo = s.Semaforo
                               ,tvs.DescrizioneStato = s.Descrizione
                        FROM    @tvStato tvs INNER JOIN AnagraficaStati s ON tvs.idxStato=s.IdxStato
                        WHERE   tvs.IdxMacchina IS NULL
                
                        -- popolo tab ODL
                        INSERT  @tvODL
                        EXEC    stp_ODL_getByMacchina @IdxMacchina

                        -- popolo tab pezzi/tempi
                        INSERT  @tvProd(CodArticolo,PezziLanciati,PezziProd,PezziConf,TCAssegnato,CodOperatore,TempoOn,TempoAuto,TempoRun,TCMedio,TCLav,TCEff,TCMedioRT,TCLavRT,TCEffRT )
                        EXEC    stp_repDonati_getDatiProdMacchina @IdxMacchina
                        -- fix dati mancanti
                        UPDATE  tvp
                        SET     tvp.IdxMacchina = @IdxMacchina
                        FROM    @tvProd tvp
                        WHERE   tvp.IdxMacchina IS NULL

                        -- aggiorno contatore
                        SET @currRow = @currRow + 1
                    END
                -- aggiorno in blocco i valori x stato e pezzi prodotti
                UPDATE  mse
                SET     mse.idxStato = ISNULL(tvs.idxStato,0)
                       ,mse.durata = ISNULL(tvs.Minuti,0)
                       ,mse.Semaforo = ISNULL(tvs.Semaforo,'')
                       ,mse.DescrizioneStato = ISNULL(tvs.DescrizioneStato,'')
                FROM    MappaStatoExpl mse INNER JOIN @tvStato tvs ON mse.IdxMacchina=tvs.IdxMacchina

                -- aggiorno in blocco i valori x ODL
                UPDATE  mse
                SET     mse.TCAssegnato = ISNULL(tvo.TCAssegnato,0)
                       ,mse.NumPezzi = ISNULL(tvo.NumPezzi,0)
                       ,mse.DataInizioODL = ISNULL(tvo.DataInizio,'2000/01/01')
                FROM    MappaStatoExpl mse INNER JOIN @tvODL tvo ON mse.IdxMacchina=tvo.IdxMacchina

                -- aggiorno in blocco i valori x produzione
                UPDATE  mse
                SET     mse.PezziProd = ISNULL(tvp.PezziProd,0)
                       ,mse.PezziConf = ISNULL(tvp.PezziConf,0)
                       ,mse.TempoOn = ISNULL(tvp.TempoOn,0)
                       ,mse.TempoAuto = ISNULL(tvp.TempoAuto,0)
                       ,mse.TempoRun = ISNULL(tvp.TempoRun,0)
                       ,mse.TCMedio = ISNULL(tvp.TCMedio,0)
                       ,mse.TCLav = ISNULL(tvp.TCLav,0)
                       ,mse.TCEff = ISNULL(tvp.TCEff,0)
                       ,mse.TCMedioRT = ISNULL(tvp.TCMedioRT,0)
                       ,mse.TCLavRT = ISNULL(tvp.TCLavRT,0)
                       ,mse.TCEffRT = ISNULL(tvp.TCEffRT,0)
                FROM    MappaStatoExpl mse INNER JOIN @tvProd tvp ON mse.IdxMacchina=tvp.IdxMacchina

            END
        END
-- restituisco la tabella finale
SELECT	* 
FROM	MappaStatoExpl

RETURN
go

/*************************************
* STORED PROCEDURE stp_MSE_refresh
* 	AGGIORNA tabella stato attuale macchine x macchina indicata
*
* modif.:	S.E.L. - 2013.02.28
**************************************/
alter PROCEDURE stp_MSE_refresh
(
    @IdxMacchina  NVARCHAR(50) -- macchina da aggiornare
)
AS

--init variabili!
DECLARE @adesso DATETIME = GETDATE()
DECLARE @trovate INT = 0
DECLARE @tvStato TABLE (
	idxStato    INT NULL,
    DescrizioneStato    NVARCHAR(50),
    Semaforo    NVARCHAR(50),
	Minuti      INT NULL
) 
DECLARE @tvODL TABLE (
	IdxODL      INT NULL,
	CodArticolo NVARCHAR(50),
	DescArticolo NVARCHAR(50),
    IdxMacchina INT NULL,
	CodMacchina NVARCHAR(50),
    Nome        NVARCHAR(50),
    NumPezzi    INT NULL,
    TCAssegnato DECIMAL(18,8),
    DataInizio  DATETIME,
    DataFine    DATETIME
) 
DECLARE @tvProd TABLE (
	CodArticolo NVARCHAR(50),
    PezziLanciati INT NULL,
    PezziProd   INT NULL,
    PezziConf   INT NULL,
    TCAssegnato DECIMAL(18,8),
    CodOperatore INT NULL,
    TempoOn     DECIMAL(18,8),
    TempoAuto   DECIMAL(18,8),
    TempoRun    DECIMAL(18,8),
    TCMedio     DECIMAL(18,8),
    TCLav       DECIMAL(18,8),
    TCEff       DECIMAL(18,8),
    TCMedioRT   DECIMAL(18,8),
    TCLavRT     DECIMAL(18,8),
    TCEffRT     DECIMAL(18,8)
) 

BEGIN
    -- controllo: se c'è riga macchina richiesta...
    SELECT  @trovate=COUNT(*) FROM MappaStatoExpl WHERE IdxMacchina = @IdxMacchina
    
    -- se NON c'è la creo...
    IF(@trovate = 0)
        BEGIN
            -- calcolo ODL
            ;WITH cteODL AS
            (
	            SELECT top 1 * FROM ODL
                WHERE IdxODL IN
                (
                SELECT IdxODL
                FROM ODL
                WHERE DataFine IS NULL
                AND (IdxMacchina = @IdxMacchina)

                UNION

                SELECT MAX(IdxODL)
                FROM ODL
                WHERE IdxMacchina = @IdxMacchina
                )
            )
            -- inserisco i nuovi dati
            INSERT INTO MappaStatoExpl(lastUpdate, IdxMacchina, CodMacchina, Nome, url, IdxODL, CodArticolo, NumPezzi, TCAssegnato, DataInizioODL)
            SELECT      @adesso, ma.IdxMacchina, ma.CodMacchina, ma.Nome, url, ISNULL(o.IdxODL,0), ISNULL(o.CodArticolo,'-'), ISNULL(o.NumPezzi,0), ISNULL(o.TCAssegnato,0), ISNULL(o.DataInizio,'2000/01/01')
            FROM	    Macchine ma LEFT OUTER JOIN cteODL o ON ma.IdxMacchina=o.IdxMacchina
            WHERE       ma.IdxMacchina = @IdxMacchina
                        AND NOT (locazione IS NULL) 
                        --AND ( (ISNULL(o.IdxODL,0) = 0) OR ((o.DataFine IS NULL) AND NOT (o.DataInizio IS NULL)) )
            ORDER BY    ma.locazione          
        END

    -- popolo tab stati
    INSERT  @tvStato(idxStato, Minuti)
    EXEC    stp_repDonati_getLastStatoDurataMacchina @IdxMacchina, 0.1
    -- fix dati mancanti
    UPDATE  tvs
    SET     tvs.Semaforo = s.Semaforo
            ,tvs.DescrizioneStato = s.Descrizione
    FROM    @tvStato tvs INNER JOIN AnagraficaStati s ON tvs.idxStato=s.IdxStato
                
    -- popolo tab ODL
    INSERT  @tvODL
    EXEC    stp_ODL_getByMacchina @IdxMacchina

    -- popolo tab pezzi/tempi
    INSERT  @tvProd(CodArticolo,PezziLanciati,PezziProd,PezziConf,TCAssegnato,CodOperatore,TempoOn,TempoAuto,TempoRun,TCMedio,TCLav,TCEff,TCMedioRT,TCLavRT,TCEffRT )
    EXEC    stp_repDonati_getDatiProdMacchina @IdxMacchina
    
    -- aggiorno in blocco i valori
    UPDATE  mse
    SET     mse.lastUpdate = @adesso
            ,mse.idxStato = ISNULL(tvs.idxStato,0)
            ,mse.durata = ISNULL(tvs.Minuti,0)
            ,mse.Semaforo = ISNULL(tvs.Semaforo,'')
            ,mse.DescrizioneStato = ISNULL(tvs.DescrizioneStato,'')
            ,mse.TCAssegnato = ISNULL(tvo.TCAssegnato,0)
            ,mse.NumPezzi = ISNULL(tvo.NumPezzi,0)
            ,mse.DataInizioODL = ISNULL(tvo.DataInizio,'2000/01/01')
            ,mse.PezziProd = ISNULL(tvp.PezziProd,0)
            ,mse.PezziConf = ISNULL(tvp.PezziConf,0)
            ,mse.TempoOn = ISNULL(tvp.TempoOn,0)
            ,mse.TempoAuto = ISNULL(tvp.TempoAuto,0)
            ,mse.TempoRun = ISNULL(tvp.TempoRun,0)
            ,mse.TCMedio = ISNULL(tvp.TCMedio,0)
            ,mse.TCLav = ISNULL(tvp.TCLav,0)
            ,mse.TCEff = ISNULL(tvp.TCEff,0)
            ,mse.TCMedioRT = ISNULL(tvp.TCMedioRT,0)
            ,mse.TCLavRT = ISNULL(tvp.TCLavRT,0)
            ,mse.TCEffRT = ISNULL(tvp.TCEffRT,0)
    FROM    MappaStatoExpl mse 
            CROSS JOIN @tvStato tvs
            CROSS JOIN @tvODL tvo 
            CROSS JOIN @tvProd tvp
    WHERE   mse.Idxmacchina = @IdxMacchina

END

RETURN
go

commit;
go








-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(380, GETDATE())
GO

SELECT  TOP 10 * FROM LogUpdateDb ORDER BY Versione DESC
GO