用法如下:get_capital_money(Currency, Money)

Currency: 货币或货币描述,将放在英文大写的前面;

Money:金额。支持两位小数点。如果需要更多的小数点,请自行修改。

create or  replace function GET_CAPITAL_MONEY (
P_currency varchar2,
P_money number)
return varchar2 IS
type DIME is table of varchar2(20) index by binary_integer;
numberstr DIME;
degratstr DIME;
convertm DIME;
tmpstr varchar2(200);
T_money_int varchar2(10);
i int;
Len_T_money_int int;
T_money_dec varchar2(2);
R_value varchar2(1000) := '';
NUM number; begin
numberstr(1) :='zero';
numberstr(2) :='one';
numberstr(3) :='two';
numberstr(4) :='three';
numberstr(5) :='four';
numberstr(6) :='five';
numberstr(7) :='six';
numberstr(8) :='seven';
numberstr(9) :='eight';
numberstr(10) :='nine'; numberstr(11) :='ten';
numberstr(12) :='eleven';
numberstr(13) :='twelve';
numberstr(14) :='thirteen';
numberstr(15) :='fourteen';
numberstr(16) :='fifteen';
numberstr(17) :='sixteen';
numberstr(18) :='seventeen';
numberstr(19) :='eighteen';
numberstr(20) :='nineteen'; numberstr(21) :='';
numberstr(22) :='';
numberstr(23) :='twenty';
numberstr(24) :='thirty';
numberstr(25) :='forty';
numberstr(26) :='fifty';
numberstr(27) :='sixty';
numberstr(28) :='seventy';
numberstr(29) :='eighty';
numberstr(30) :='ninety';
degratstr(1) :='thousand';
degratstr(2) :='million';
degratstr(3) :='billion';
degratstr(4) :='trillion';
num := P_money;
if num = 0 then
R_value := 'ZERO';
end if;
T_money_int := trim(to_char(num,'9999999999'));
T_money_dec := substr(TRIM(to_char(num,'9999999999.99')),length(T_money_int)+2,2);
select decode(mod(length(T_money_int),3),1,'00'||T_money_int,2,'0'||T_money_int,T_money_int) into T_money_int from dual;
Len_T_money_int := length(T_money_int);
i := 0;
while i < Len_T_money_int loop
i := i+3;
convertm(1) := SUBSTR(T_money_int,Len_T_money_int-i+1,1);
convertm(2) := SUBSTR(T_money_int,Len_T_money_int-i+2,1);
convertm(3) := SUBSTR(T_money_int,Len_T_money_int-i+3,1);
tmpstr := '';
if convertm(1) <> '0' then
tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(1))+1)||' hundred');
end if;
if convertm(2) = '1' then
tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(3))+11));
else
if convertm(2) <> '0' then
if convertm(3) = '0' then
tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(2))+21));
else
tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(2))+21)||'-'||numberstr(to_number(convertm(3))+1));
end if;
else
if convertm(3) <> '0' then
tmpstr := trim(tmpstr||' '||numberstr(to_number(convertm(3))+1));
end if;
end if;
end if;
if i = 3 then
R_value := trim(tmpstr||' '||R_value);
else
R_value := trim(tmpstr||' '||degratstr(i/3-1)||' '||R_value);
end if;
end loop;
tmpstr := '';
if to_number(T_money_dec)>0 then
if substr(T_money_dec,1,1) = '0' then
tmpstr := 'and '||substr(T_money_dec,2,1)||'/100';
else
tmpstr := 'and '||t_money_dec||'/100';
end if;
end if;
if length(tmpstr)<1 then
R_value := upper(R_value||' only.');
else
R_value := upper(R_value||' '||tmpstr||' only.');
end if;
return P_currency||' '||R_value;
end;

ORACLE金额转换成英文大写的函数的更多相关文章

  1. SQLSERVER金额转换成英文大写的函数

    CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2)) RETURNS varchar(400) WITH ENCRYPTION AS BEGIN ...

  2. JS把数字金额转换成中文大写数字的函数

    //把数字金额转换成中文大写数字的函数 function num2rmb ($num){ $c1="零壹贰叁肆伍陆柒捌玖"; $c2="分角元拾佰仟万拾佰仟亿" ...

  3. PHP 数字金额转换成中文大写金额的函数 数字转中文

    /** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($ ...

  4. C#中将数字金额转成英文大写金额的函数

    <span style="white-space:pre"> </span>/// <summary> /// 数字转金额大写 /// 调用示例 ...

  5. excel小写金额转换成中文大写

    假设 假设数据在A1单元格 任何一个个单元格输入公式=TEXT(INT(A1),"[dbnum2]")&"元"&IF(INT(A1*10)-IN ...

  6. SQL函数:小写金额转换成大写

    /********************************************************作者:版本:1.0创建时间:20020227修改时间:功能:小写金额转换成大写参数:n ...

  7. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  8. ABAP 金额转换成大写

     FUNCTION zzfi_change_amount.*"---------------------------------------------------------------- ...

  9. PHP算法--将数字金额转换成大写金额

    最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...

随机推荐

  1. MySQL读写分离实现

    数据库写入效率要低于读取效率,一般系统中数据读取频率高于写入频率,单个数据库实例在写入的时候会影响读取性能,这是做读写分离的原因.实现方式主要基于mysql的主从复制,通过路由的方式使应用对数据库的写 ...

  2. java将一个List赋值给另一个List的4种方法

    编辑 删除 声明:ArrayList a, 仅仅只是声明了一个list变量,其未来作用相当于C++中的引用变量,亦或者相当于一个对象块的索引,但并未为其分配具体的完整的对象所需要的内存空间,其所分配的 ...

  3. sqlserver:查询锁住sql以及解锁

    --查看被锁表:SELECT request_session_id spid, OBJECT_NAME( resource_associated_entity_id ) tableNameFROM s ...

  4. vue下axios和fetch跨域请求

    1.在config的index.js下面进行常用跨域配置代码:proxyTable: { '/apis': { //使用"/api"来代替"http://xxxx.cn& ...

  5. codevs 1519 过路费

    时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master 题目描述 Description 在某个遥远的国家里,有 n个城市.编号为 1,2,3,…,n.这个国家的政府 ...

  6. vue 自定义组件 v-model双向绑定、 父子组件同步通信【转】

    父子组件通信,都是单项的,很多时候需要双向通信.方法如下: 1.父组件使用:msg.sync="aa"  子组件使用$emit('update:msg', 'msg改变后的值xxx ...

  7. echart-柱状图

    目前在改别人遗留的bug,需求: 宽度 自适应的情况下 展示不友好:宽度太大 上下不居中 需求 要 上下 无论是否 有内容 都要居中展示 以0刻度为标准 宽度 设置 series: [ { name: ...

  8. JetBrains系列产品激活

    注册时,在打开的License Activation窗口中选择“License server”,在输入框输入下面的网址: http://idea.codebeta.cn https://s.tuzhi ...

  9. java生成随机字符

    1.生成的字符串每个位置都有可能是str中的一个字母或数字,需要导入的包是import java.util.Random; //length用户要求产生字符串的长度 public static Str ...

  10. Hibernate-04

    HQL查询语法 查询:public class Dome{ Session session = HibernaeUitls.openSession(); Transaction tx = sessio ...