设计全局函数实现金额的中文大写方式

来源:百度知道 编辑:UC知道 时间:2024/05/16 08:29:14
读入一个浮点数值,将其转换为中文金额的大写方式,如123.45转换为壹佰贰拾叁元肆角五分。编写全局函数实现题意,并针对以下多种数据情况进一步完善函数。
①当金额为整数时,只表示整数部分,省略小数部分,并添加“整”字,如123表示为壹佰贰拾叁元整。
②当金额中含有连续的0时,只需写一个“零”即可,如10005表示为壹万零伍元整。
③10的表示方式,如110表示为壹佰一拾元整,而10则表示为拾元整。
这个是要用PowerBuilder设计的,所以最好能写清楚每部都是怎么做的哦

CREATE OR REPLACE FUNCTION L2U -- 小写金额转换成大写
(
n_LowerMoney IN NUMBER,
v_TransType IN NUMBER DEFAULT 1 -- 1: directly translate, 0: read it in words
)
RETURN VARCHAR2
AS
v_LowerStr VARCHAR2(200); -- 小写金额
v_UpperPart VARCHAR2(200);
v_UpperStr VARCHAR2(200); -- 大写金额
BEGIN
v_LowerStr := LTRIM(RTRIM(TO_CHAR(ROUND(n_LowerMoney,2),'9999999999999.99')));
IF SUBSTR(v_LowerStr,1,1) = '#' THEN
RETURN '转换金额超过计算范围(计算范围为:计算范围为: 0 - 9,999,999,999,999.99)';
END IF;
FOR I IN 1 .. LENGTH(v_LowerStr) LOOP
SELECT DECODE(SUBSTR(v_LowerStr,LENGTH(v_LowerStr) - I + 1,1),
'.','元',
'0','零', '1','壹', '2','贰', '3','叁', '4','肆',
'5','伍', '6','陆', '7','柒', '8','捌', '9','玖')||
DECODE(I,1,'分',2,'角',3,NU