ORACLE在实现报表的功能是很强大的 特别在现实的应用中会经常用到人民币大小写转换的问题 在此我写个函数向大家简单介绍一下 希望和大家一起探讨 以便共同进步! 共同发展!
函数DX_MONEY()
CREATE FUNCTIONDX_MONEY
(
MONEY IN NUMBER
)
RETURN VARCHAR AS V_MONEY VARCHAR();
RV_MONEY VARCHAR();
RV_MONEY VARCHAR();
RV_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
V_MONEY VARCHAR();
RPV_MONEY VARCHAR();
RPV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
PV_MONEY VARCHAR();
BEGIN
V_MONEY:=LTRIM(RTRIM(TO_CHAR(FLOOR(MONEY))));
RV_MONEY:=LTRIM(RTRIM(TO_CHAR(FLOOR(MONEY*))));
RV_MONEY:=SUBSTR(RV_MONEYLENGTH(RV_MONEY));
IF LENGTH(RV_MONEY)> THEN
RV_MONEY:=SUBSTR(RV_MONEYLENGTH(RV_MONEY));
ELSE
RV_MONEY:=;
END IF;
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
IF LENGTH(V_MONEY)> THEN
V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
ELSE V_MONEY:=;
END IF;
select DECODE(RV_MONEY零分壹分贰分参分肆分伍分
陆分柒分扒分玖分) into rpv_money from dual;
select DECODE(RV_MONEY零角壹角贰角参角肆角伍角
陆角柒角扒角玖角) into rpv_money from dual;
select DECODE(V_MONEY元壹元贰元参元肆元伍元
陆元柒元扒元玖元) into pv_money from dual;
select DECODE(V_MONEY壹拾贰拾参拾肆拾伍拾
陆拾柒拾扒拾玖拾) into pv_money from dual;
select DECODE(V_MONEY壹佰贰佰参佰肆佰伍佰
陆佰柒佰扒佰玖佰) into pv_money from dual;
select DECODE(V_MONEY壹仟贰仟参仟肆仟伍仟
陆仟柒仟扒仟玖仟) into pv_money from dual;
select DECODE(V_MONEY万壹万贰万参万肆万伍万
陆万柒万扒万玖万) into pv_money from dual;
select DECODE(V_MONEY壹拾贰拾参拾肆拾伍拾
陆拾柒拾扒拾玖拾) into pv_money from dual;
select DECODE(V_MONEY壹佰贰佰参佰肆佰伍佰
陆佰柒佰扒佰玖佰) into pv_money from dual;
select DECODE(V_MONEY壹仟贰仟参仟肆仟伍仟
陆仟柒仟扒仟玖仟) into pv_money from dual;
select DECODE(V_MONEY亿壹亿贰亿参亿肆亿伍亿
陆亿柒亿扒亿玖亿) into pv_money from dual;
select DECODE(V_MONEY壹拾贰拾参拾肆拾伍拾
陆拾柒拾扒拾玖拾) into pv_money from dual;
select DECODE(V_MONEY壹佰贰佰参佰肆佰伍佰
陆佰柒佰扒佰玖佰) into pv_money from dual;
select DECODE(V_MONEY壹仟贰仟参仟肆仟伍仟
陆仟柒仟扒仟玖仟) into pv_money from dual;
V_MONEY:=PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||
PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||
RPV_MONEY||RPV_MONEY;
RETURN (V_MONEY);
END;
执行状况如下:
SQL*Plus: Release Production on 星期二 月 ::
Copyright (c) Oracle CorporationAll rights reserved
连线到:
Oraclei Enterprise Edition Release Production
With the Partitioning option
JServer Release Production
SQL> select dx_money() from dual;
DX_MONEY()
参亿贰仟肆佰肆拾伍万伍佰陆拾柒元扒角玖分
本例的最大数字
以上函数写的比较简单易懂 语法上不一定精简 欢迎大家一起探讨!