斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          function函數(shù)

          Posted on 2010-07-24 16:19 斷點 閱讀(307) 評論(0)  編輯  收藏 所屬分類: Oracle DBA
          --函數(shù)
          create or replace function sal_tax
             (v_sal number)
             return number
          is
          begin
            if(v_sal < 2000) then
              return 0.10;
            elsif(v_sal < 2750) then
              return 0.15;
            else
              return 0.20;
            end if;
          end;

          數(shù)據(jù)庫定義的函數(shù)money_to_chinese ,把數(shù)字轉(zhuǎn)換正中文輸出。
          create or replace function money_to_chinese(money in VARCHAR2)
             return varchar2 is
               c_money   VARCHAR2(12);
               m_string VARCHAR2(60) := '分角圓拾佰仟萬拾佰仟億';
               n_string VARCHAR2(40) := '壹貳叁肆伍陸柒捌玖';
               b_string VARCHAR2(80);
               n         CHAR;
               len       NUMBER(3);
               i         NUMBER(3);
               tmp       NUMBER(12);
               is_zero   BOOLEAN;
               z_count   NUMBER(3);
               l_money   NUMBER;
               l_sign    VARCHAR2(10);

             BEGIN
               l_money := abs(money);
               IF money < 0 THEN
                 l_sign := '負' ;
               ELSE
                 l_sign := '';
               END IF;
               tmp      := round(l_money, 2) * 100;
               c_money := rtrim(ltrim(to_char(tmp, '999999999999')));
               len      := length(c_money);
               is_zero := TRUE;
               z_count := 0;
               i        := 0;
               WHILE i < len LOOP
                 i := i + 1;
                 n := substr(c_money, i, 1);
                 IF n = '0' THEN
                   IF len - i = 6 OR len - i = 2 OR len = i THEN
                     IF is_zero THEN
                       b_string := substr(b_string, 1, length(b_string) - 1);
                       is_zero   := FALSE;
                     END IF;
                     IF len - i = 6 THEN
                       b_string := b_string || '萬';
                     END IF;
                     IF len - i = 2 THEN
                       b_string := b_string || '圓';
                     END IF;
                     IF len = i THEN
                        IF (len = 1) THEN
                           b_string := '零圓整';
                        ELSE
                           b_string := b_string || '整';
                        END IF;
                     END IF;
                     z_count := 0;
                   ELSE
                     IF z_count = 0 THEN
                       b_string := b_string || '零';
                       is_zero   := TRUE;
                     END IF;
                     z_count := z_count + 1;
                   END IF;
                 ELSE
                   b_string := b_string || substr(n_string, to_number(n), 1) ||
                               substr(m_string, len - i + 1, 1);
                   z_count   := 0;
                   is_zero   := FALSE;
                 END IF;
               END LOOP;
               b_string := l_sign || b_string ;
               RETURN b_string;
          exception
             --異常處理
              WHEN OTHERS THEN
                 RETURN(SQLERRM);
          END;

          主站蜘蛛池模板: 天津市| 习水县| 翼城县| 安溪县| 宣城市| 吉首市| 三河市| 舞阳县| 万山特区| 沂水县| 永兴县| 昭苏县| 大埔区| 肃南| 清水河县| 承德县| 鄂托克旗| 界首市| 辽宁省| 邳州市| 类乌齐县| 沙河市| 凤翔县| 桑植县| 新昌县| 沿河| 西乌珠穆沁旗| 揭阳市| 望奎县| 永仁县| 绥芬河市| 龙川县| 景宁| 连云港市| 巩留县| 仁布县| 吉木萨尔县| 建德市| 广丰县| 南澳县| 成武县|