试试:
UPDATE ALLOT T
SET T.PRODUCT_HEAT = (SELECT NVL(CALC_NUM * T.ALLOT_NUM ,'0')
FROM VL_USERHEAT K
WHERE T.USER_ID = K.USER_ID AND
T.PDT_ID = K.PDT_ID AND
K.CALC_TIME = T.ALLOT_TIME)
WHERE T.ALLOT_TIME = CALC_TIME;
UPDATE ALLOT T
SET T.PRODUCT_HEAT = (SELECT NVL(CALC_NUM * T.ALLOT_NUM ,'0')
FROM VL_USERHEAT K
WHERE T.USER_ID = K.USER_ID AND
T.PDT_ID = K.PDT_ID AND
K.CALC_TIME = T.ALLOT_TIME)
WHERE T.ALLOT_TIME = CALC_TIME;
你的这种做法是可行,我也试过,但是有个情况就是如果Select是null的话,那就更新到数据库了