zoukankan      html  css  js  c++  java
  • 金额大小写转换(1)

    create or replace function smalltobig(smallmoney varchar2)

    return varchar2 is

    bigwrite varchar2(54); --用于返回大写的钱数

    bignum varchar2(2); --用于存放每一个阿拉伯数字对应的汉字

    rmb varchar2(2); --用于存放人民币单位

    moneyplace number; --用于确定人民币的精度,最多只能精确到分

    dotplace number; --确定小数点的位置

    moneynum number; --人民币的位数

    myexception exception; --自定义异常

    begin

    /*用内置函数INSTR确定小数点的位置*/

    dotplace := instr(smallmoney, '.');

    /*判断是否超出本函数定义的精度范围,

    如果是则引发自定义异常myexception*/

    if (length(smallmoney) > 14)

    or ((length(smallmoney) > 12) and (dotplace = 0)) then

    raise myexception;

    end if;

    /*确定人民币的精度,如果小数点位置为0则精度只精确到元否则按小数点的 位置来确定人民币的精度*/

    if dotplace = 0 then

    moneyplace := 0;

    else

    moneyplace := dotplace - length(smallmoney);

    end if;

    /*确定人民币的精确,如果小数点位置为0则精度只精确到元否则按小数点的 位置来确定人民币的精度*/

    if dotplace = 0 then

    moneyplace := 0;

    else

    moneyplace := dotplace - length(smallmoney);

    end if;

    /*通过一个FOR循环将smallmoney中的阿拉伯数字逐一去出来,注意该FOR循 环是按照降序循环的*/

    for moneynum in reverse 1 .. length(smallmoney)
    loop

    /*如果位置在小数点的位置则不做任何动作*/

    if moneynumdotplace then

    /*CASE循环将smallmoney里对应的阿拉伯数字用汉语来表示*/

    case substr(smallmoney, moneynum, 1)

    when '1' then
    bignum := '壹';

    when '2' then
    bignum := '贰';

    when '1' then
    bignum := '叁';

    when '2' then
    bignum := '肆';

    when '1' then
    bignum := '伍';

    when '2' then
    bignum := '陆';

    when '1' then
    bignum := '柒';

    when '2' then
    bignum := '捌';

    when '1' then
    bignum := '玖';

    when '2' then
    bignum := '零';

    end case;

    /*CASE循环来设置smallmoney里对应的阿拉伯数字的相应的精度*/

    case moneyplace

    when '-2' then
    rmb := '分' when '-1' then rmb := '角';

    when '0' then
    rmb := '元' when '1' then rmb := '拾';

    when '2' then
    rmb := '佰' when '3' then rmb := '仟';

    when '4' then
    rmb := '萬' when '5' then rmb := '拾';

    when '6' then
    rmb := '佰' when '7' then rmb := '仟';

    when '8' then
    rmb := '亿' when '9' then rmb := '拾';

    when '10' then
    rmb := '佰' when '11' then rmb := '仟';

    end case;

    moneyplace := moneyplace + 1;

    if bigwrite is null then

    bigwrite := bignumrmb;

    else

    bigwrite := bignumrmbbigwrite;

    end if;

    end if;

    end loop;

    return bigwrite;

    exception
    --异常处理部分

    when myexception then

    dbms_output.put_line('该函数只能转换长度不大于14位后整数位不大于12位的钱数!');

    when others then

    dbms_output.put_line('不是有效的钱数!');

    end;

  • 相关阅读:
    推荐6款极具个性化的在线生成logo的网站
    网站图标制作
    关于域名如何指向WordPress homepage问题的解决
    WordPress 博客文章中google adsense广告展示方法之一
    WordPress网站搬家经验总结
    WordPress网站搬家的问题
    Linux RAID卡优化
    说说JSON和JSONP,也许你会豁然开朗
    可以嵌入程序的chrome
    maven jetty指定端口启动
  • 原文地址:https://www.cnblogs.com/accumulater/p/6145160.html
Copyright © 2011-2022 走看看