夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          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...
          posted on 2012-12-25 19:40 HUIKK 閱讀(828) 評論(0)  編輯  收藏 所屬分類: DataBase
          主站蜘蛛池模板: 根河市| 黑水县| 襄汾县| 五原县| 来凤县| 延津县| 绥棱县| 平潭县| 武胜县| 科技| 广灵县| 德安县| 明光市| 云和县| 麻城市| 罗江县| 凤冈县| 钟山县| 郴州市| 鹤岗市| 昌吉市| 自治县| 舟曲县| 南漳县| 民县| 东港市| 长武县| 靖安县| 瓮安县| 达尔| 马山县| 博客| 东阳市| 澄迈县| 深泽县| 绥棱县| 株洲县| 陕西省| 通州区| 体育| 元朗区|