/************************************* * 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)