Files
2017-01-27 22:26:50 +01:00

48 lines
1.5 KiB
Transact-SQL

/*************************************
* STORED PROCEDURE sp_procStatEv
* esegue la chiamata d processing x stati in base all'attuale stato ed all'evento associato
*
* modif.: S.E.L.
* il: 2009.01.22
**************************************/
CREATE PROCEDURE sp_procStatEv
(
@numIntMtz INT,
@idxEvento INT,
@idxStatoNew INT OUTPUT
)
AS
-- chiamo la query di update, che cerca una riga nella tab transizioni x lo stato e l'evento richiesti e se li trova esegue update del ciclo...
DECLARE @currIdxStato AS INT
DECLARE @procedere AS INT
BEGIN TRAN
-- calcolo stato corrente del ciclo...
SET @currIdxStato = ISNULL((SELECT idxStato
FROM InterventiMtz
WHERE (numIntMtz = @numIntMtz)),0)
-- cerco transizione da stato ed evento associati...
SET @procedere = ISNULL((SELECT COUNT(*) FROM Tra_Ev2Stati WHERE idxEvento=@idxEvento AND idxStato=@currIdxStato),0)
-- se trovo eseguo transizione...
IF(@procedere >0)
BEGIN
UPDATE InterventiMtz
SET idxStato = Tra_Ev2Stati.nextIdxStato
FROM InterventiMtz INNER JOIN
Tra_Ev2Stati ON InterventiMtz.idxStato = Tra_Ev2Stati.idxStato
WHERE (InterventiMtz.numIntMtz = @numIntMtz) AND (Tra_Ev2Stati.idxEvento = @idxEvento)
END
COMMIT TRAN
-- calcolo lo stato nuovo...
SET @idxStatoNew = ISNULL((SELECT idxStato
FROM InterventiMtz
WHERE (numIntMtz = @numIntMtz)),0)
RETURN (@idxStatoNew)