Kod: Tümünü seç
SELECT @COEF = COEF
FROM LAZS_COEF AS CF
WHERE (ONFORCEDATE < @CALCYEAR)
AND (OFFORCEDATE >= @CALCYEAR)
AND (SUBJGROUPID = @SUBJGROUPID)
OR (ONFORCEDATE < @CALCYEAR)
AND (OFFORCEDATE IS NULL)
AND (SUBJGROUPID = @SUBJGROUPID)
SET @CALCED = @AREA * @COEF
-- NOW WE'RE UPDATING THE PREVIUOS AND TOTAL REMAINDER
UPDATE AZS_COM
SET PREVREM = ISNULL(TOTALREM, 0)
WHERE COMID = @COMID
UPDATE AZS_COM
SET TOTALREM = (ISNULL(TOTALREM, 0))+ @CALCED
WHERE COMID = @COMID
Kısaca anlatayım: Önce parametre olarak girdiğim @SUBJGROUPID ve @CALCYEAR la COEFi buluyor ve @COEFe atıyorum.(@COEF bi değişken) Daha sonra yine de parametre olarak gönderdiğim @AREA yı @COEFle çarparak @CALCED alıyorum.(@Calced bi değişken).SOnra diyorum ki, PREVREM=TOTALREM. Burada bi problem yok. Ama ikinci Update'e gelince @CALCED her halde NULL olarak algılıyor ki, TOTALREM NULL oluyor.
Denedim, @CALCED yerine her hangi bir rakam yazdığım zaman çalışıyor. Mesela desem ki
UPDATE AZS_COM
SET TOTALREM = (ISNULL(TOTALREM, 0))+ 50
WHERE COMID = @COMID
hiç bi problem yok.