SELECT AMOUNT
INTO l_Amount
FROM T1
WHERE...
條件比較長,省略。可以保證最多只有一條相符結果。
無記錄的時候,想把l_Amount設為0。
為了應付無記錄的情況,想了以下這些寫法:
第1種,先檢查件數:
SELECT COUNT(*) INTO l_Cnt 以下省略
IF l_Cnt > 0 THEN
SELECT AMOUNT INTO l_Amount 以下省略
END IF;
第2種,用exception:
FUNCTION GETAMOUNT RETURN NUMBER
IS l_Ret BEGIN SELECT AMOUNT INTO l_Ret 以下省略
RETURN l_Ret
WHEN NO_DATA_FOUND THEN RETURN 0 END;
第3種,用UNION:
SELECT AMOUNT
INTO l_Amount
FROM
( SELECT AMOUNT
FROM T1
WHERE...
UNION ALL
SELECT 0 FROM DUAL
)
WHERE rownum <=1;
第4種,用NVL函數:
SELECT NVL(MAX(AMOUNT), 0)因為最多就一條記錄,MAX,MIN之類的函數都可以
INTO l_Amount
FROM T1
WHERE...