CREATE PROCEDURE INFOBIT_SP_RicalcolaConsumoDI_ALL_WithCheck LANGUAGE SQLSCRIPT AS --Dichiarazione variabili CardCode nvarchar(15); Anno smallint; CardType char(1); Splafonato smallint; ImportoConsumato numeric(19, 6); NuovoConsumo numeric(19, 6); --Recupera tutte le dichirazioni CURSOR DI FOR SELECT A."U_CodiceBP", A."U_Dich_Anno", B."CardType", SUM(A."U_ImportoConsumato") AS "TOT_CONS" 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"; BEGIN CREATE LOCAL TEMPORARY TABLE #CheckRicalcolaConsumoDI (CardCode nvarchar(15), Anno smallint, Splafonato smallint); FOR DI_ROW AS DI DO SELECT DI_ROW."U_CodiceBP", DI_ROW."U_Dich_Anno", DI_ROW."CardType", DI_ROW."TOT_CONS" INTO CardCode, Anno, CardType, ImportoConsumato FROM DUMMY; CALL INFOBIT_SP_Ring_DI_RicalcolaConsumo (:CardCode, :Anno, :CardType, :Splafonato); SELECT SUM("U_ImportoConsumato") INTO NuovoConsumo FROM "@INFOBIT_DICHINTBP" WHERE "U_CodiceBP" = :CardCode AND "U_Dich_Anno" = :Anno; IF :ImportoConsumato <> :NuovoConsumo THEN --AND @Splafonato = 1 INSERT INTO #CheckRicalcolaConsumoDI (CardCode, Anno, Splafonato) VALUES (:CardCode, :Anno, :Splafonato); END IF; END FOR; CLOSE DI; SELECT * FROM #CheckRicalcolaConsumoDI; DROP TABLE #CheckRicalcolaConsumoDI; END;