数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

如何在ORACLE中实现人民币大写的转换


发布日期:2019年01月14日
 
如何在ORACLE中实现人民币大写的转换

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()

参亿贰仟肆佰肆拾伍万伍佰陆拾柒元扒角玖分

本例的最大数字

以上函数写的比较简单易懂 语法上不一定精简 欢迎大家一起探讨!

上一篇:oracle认证辅导:oracle优化和管理sql1

下一篇:Oracle10gR2RAC+RHEL4+VMWareGSX简明安装步骤