48 lines
1.5 KiB
Transact-SQL
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)
|