CREATE PROCEDURE [dbo].[INFOBIT_SP_RicalcolaConsumoDI_ALL_WithCheck] AS BEGIN SET NOCOUNT ON; DECLARE @CardCode nvarchar(15) DECLARE @Anno smallint DECLARE @CardType char(1) DECLARE @Splafonato smallint DECLARE @ImportoConsumato numeric(19, 6) DECLARE @NuovoConsumo numeric(19, 6) --Recupera tutte le dichirazioni dei fornitori DECLARE DI CURSOR LOCAL FORWARD_ONLY FOR SELECT A.U_CodiceBP, A.U_Dich_Anno, B.CardType, SUM(A.U_ImportoConsumato) FROM "@INFOBIT_DICHINTBP" A INNER JOIN OCRD B ON B.CardCode = A.U_CodiceBP --WHERE B.CardType = 'S' GROUP BY A.U_CodiceBP, A.U_Dich_Anno, B.CardType OPEN DI FETCH NEXT FROM DI INTO @CardCode, @Anno, @CardType, @ImportoConsumato CREATE TABLE #CheckRicalcolaConsumoDI (CardCode nvarchar(15), Anno smallint, Splafonato smallint) WHILE @@FETCH_STATUS = 0 BEGIN EXEC dbo.INFOBIT_SP_Ring_DI_RicalcolaConsumo @CardCode, @Anno, @CardType, @Splafonato OUTPUT SELECT @NuovoConsumo = SUM(U_ImportoConsumato) FROM "@INFOBIT_DICHINTBP" WHERE U_CodiceBP = @CardCode AND U_Dich_Anno = @Anno IF @ImportoConsumato <> @NuovoConsumo --AND @Splafonato = 1 BEGIN INSERT INTO #CheckRicalcolaConsumoDI (CardCode, Anno, Splafonato) VALUES (@CardCode, @Anno, @Splafonato) END FETCH NEXT FROM DI INTO @CardCode, @Anno, @CardType, @ImportoConsumato END CLOSE DI DEALLOCATE DI SELECT * FROM #CheckRicalcolaConsumoDI END