ORACLE在实现报表的功能是很强大的, 特别在现实的应用中会经常用到人民币大小写转换的问题, 在此我写个函数向大家简单介绍一下, 希望和大家一起探讨, 以便共同进步! 共同发展!

1. 函数DX_MONEY()

CREATE FUNCTION DX_MONEY

(

MONEY IN NUMBER

)

RETURN VARCHAR2 AS V_MONEY VARCHAR2(150);

RV_MONEY0 VARCHAR2(20);

RV_MONEY1 VARCHAR2(4);

RV_MONEY2 VARCHAR2(4);

V_MONEY0 VARCHAR2(20);

V_MONEY1 VARCHAR2(4);

V_MONEY2 VARCHAR2(4);

V_MONEY3 VARCHAR2(4);

V_MONEY4 VARCHAR2(4);

V_MONEY5 VARCHAR2(4);

V_MONEY6 VARCHAR2(4);

V_MONEY7 VARCHAR2(4);

V_MONEY8 VARCHAR2(4);

V_MONEY9 VARCHAR2(4);

V_MONEY10 VARCHAR2(4);

V_MONEY11 VARCHAR2(4);

V_MONEY12 VARCHAR2(4);

RPV_MONEY1 VARCHAR2(4);

RPV_MONEY2 VARCHAR2(4);

PV_MONEY0 VARCHAR2(14);

PV_MONEY1 VARCHAR2(4);

PV_MONEY2 VARCHAR2(4);

PV_MONEY3 VARCHAR2(4);

PV_MONEY4 VARCHAR2(4);

PV_MONEY5 VARCHAR2(4);

PV_MONEY6 VARCHAR2(4);

PV_MONEY7 VARCHAR2(4);

PV_MONEY8 VARCHAR2(4);

PV_MONEY9 VARCHAR2(4);

PV_MONEY10 VARCHAR2(4);

PV_MONEY11 VARCHAR2(4);

PV_MONEY12 VARCHAR2(4);

BEGIN

V_MONEY0:=LTRIM(RTRIM(TO_CHAR(FLOOR(MONEY))));

RV_MONEY0:=LTRIM(RTRIM(TO_CHAR(FLOOR(MONEY*100))));

RV_MONEY1:=SUBSTR(RV_MONEY0,LENGTH(RV_MONEY0),1);

IF LENGTH(RV_MONEY0)>1 THEN

RV_MONEY2:=SUBSTR(RV_MONEY0,LENGTH(RV_MONEY0)-1,1);

ELSE

RV_MONEY2:='0';

END IF;

V_MONEY1:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0),1);

IF LENGTH(V_MONEY0)-1>0 THEN

V_MONEY2:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-1,1);

ELSE V_MONEY2:=0;

END IF;

IF LENGTH(V_MONEY0)-2>0 THEN

V_MONEY3:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-2,1);

ELSE V_MONEY3:=0;

END IF;

IF LENGTH(V_MONEY0)-3>0 THEN

V_MONEY4:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-3,1);

ELSE V_MONEY4:=0;

END IF;

IF LENGTH(V_MONEY0)-4>0 THEN

V_MONEY5:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-4,1);

ELSE V_MONEY5:=0;

END IF;

IF LENGTH(V_MONEY0)-5>0 THEN

V_MONEY6:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-5,1);

ELSE V_MONEY6:=0;

END IF;

IF LENGTH(V_MONEY0)-6>0 THEN

V_MONEY7:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-6,1);

ELSE V_MONEY7:=0;

END IF;

IF LENGTH(V_MONEY0)-7>0 THEN

V_MONEY8:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-7,1);

ELSE V_MONEY8:=0;

END IF;

IF LENGTH(V_MONEY0)-8>0 THEN

V_MONEY9:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-8,1);

ELSE V_MONEY9:=0;

END IF;

IF LENGTH(V_MONEY0)-9>0 THEN

V_MONEY10:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-9,1);

ELSE V_MONEY10:=0;

END IF;

IF LENGTH(V_MONEY0)-10>0 THEN

V_MONEY11:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-10,1);

ELSE V_MONEY11:=0;

END IF;

IF LENGTH(V_MONEY0)-11>0 THEN

V_MONEY12:=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-11,1);

ELSE V_MONEY12:=0;

END IF;

select DECODE(RV_MONEY1,'0','零分','1','壹分','2','贰分','3','参分','4','肆分','5','伍分',

'6','陆分','7','柒分','8','扒分','9','玖分') into rpv_money1 from dual;

select DECODE(RV_MONEY2,'0','零角','1','壹角','2','贰角','3','参角','4','肆角','5','伍角',

'6','陆角','7','柒角','8','扒角','9','玖角') into rpv_money2 from dual;

select DECODE(V_MONEY1,'0','元','1','壹元','2','贰元','3','参元','4','肆元','5','伍元',

'6','陆元','7','柒元','8','扒元','9','玖元') into pv_money1 from dual;

select DECODE(V_MONEY2,'0','','1','壹拾','2','贰拾','3','参拾','4','肆拾','5','伍拾',

'6','陆拾','7','柒拾','8','扒拾','9','玖拾') into pv_money2 from dual;

select DECODE(V_MONEY3,'0','','1','壹佰','2','贰佰','3','参佰','4','肆佰','5','伍佰',

'6','陆佰','7','柒佰','8','扒佰','9','玖佰') into pv_money3 from dual;

select DECODE(V_MONEY4,'0','','1','壹仟','2','贰仟','3','参仟','4','肆仟','5','伍仟',

'6','陆仟','7','柒仟','8','扒仟','9','玖仟') into pv_money4 from dual;

select DECODE(V_MONEY5,'0','万','1','壹万','2','贰万','3','参万','4','肆万','5','伍万',

'6','陆万','7','柒万','8','扒万','9','玖万') into pv_money5 from dual;

select DECODE(V_MONEY6,'0','','1','壹拾','2','贰拾','3','参拾','4','肆拾','5','伍拾',

'6','陆拾','7','柒拾','8','扒拾','9','玖拾') into pv_money6 from dual;

select DECODE(V_MONEY7,'0','','1','壹佰','2','贰佰','3','参佰','4','肆佰','5','伍佰',

'6','陆佰','7','柒佰','8','扒佰','9','玖佰') into pv_money7 from dual;

select DECODE(V_MONEY8,'0','','1','壹仟','2','贰仟','3','参仟','4','肆仟','5','伍仟',

'6','陆仟','7','柒仟','8','扒仟','9','玖仟') into pv_money8 from dual;

select DECODE(V_MONEY9,'0','亿','1','壹亿','2','贰亿','3','参亿','4','肆亿','5','伍亿',

'6','陆亿','7','柒亿','8','扒亿','9','玖亿') into pv_money9 from dual;

select DECODE(V_MONEY10,'0','','1','壹拾','2','贰拾','3','参拾','4','肆拾','5','伍拾',

'6','陆拾','7','柒拾','8','扒拾','9','玖拾') into pv_money10 from dual;

select DECODE(V_MONEY11,'0','','1','壹佰','2','贰佰','3','参佰','4','肆佰','5','伍佰',

'6','陆佰','7','柒佰','8','扒佰','9','玖佰') into pv_money11 from dual;

select DECODE(V_MONEY12,'0','','1','壹仟','2','贰仟','3','参仟','4','肆仟','5','伍仟',

'6','陆仟','7','柒仟','8','扒仟','9','玖仟') into pv_money12 from dual;

V_MONEY:=PV_MONEY12||PV_MONEY11||PV_MONEY10||PV_MONEY9||PV_MONEY8||

PV_MONEY7||PV_MONEY6||PV_MONEY5||PV_MONEY4||PV_MONEY3||PV_MONEY2||PV_MONEY1||

RPV_MONEY2||RPV_MONEY1;

RETURN (V_MONEY);

END;

2. 执行状况如下:

SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 7月 29 15:03:36 2003

Copyright (c) 1982, 2002, Corporation. All rights reserved.

连线到:

8i Enterprise Edition Release 8.1.6.1.0 - Production

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

SQL> select dx_money(324450567.89) from dual;

DX_MONEY(324450567.89)

--------------------------------------------------------------------------------

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

3. 本例的最大数字999999999999.99

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

【责编:admin】

--------------------next---------------------

oracle显示人民币,如何在ORACLE中实现人民币大写的转换相关推荐

  1. 表格在整个html居中显示,html 表格字符居中显示_如何在HTML中居中显示表格?

    html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示_如何在HTML中居中显示表格? html 表格字符居中显示 HTML table provides the ab ...

  2. oracle ioc图标,如何在PPT中导入ico格式的图标

    如何在PPT中导入ico格式的图标以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何在PPT中导入ico格式的图标 在 ...

  3. Linux下oracle显示问号,Linux下oracle插入(导入)中文记录显示为问号问题及解决办法...

    字符集 oracle官方关于字符集和NLS_LANG的解答:http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20 ...

  4. autocad 如何摆正显示_如何在 VB 中连接 AutoCAD

    1.如何在 VB 中连接 AutoCAD. 启动 VB ,引用 AutoCAD 类型库.操作步骤:从"工程"菜单中选择"引用"选项,启动"引用&quo ...

  5. android 显示进度,progressdialog-如何在Android中显示进度对话框?

    progressdialog-如何在Android中显示进度对话框? 当我单击"登录"按钮时,我想显示ProgressDialog,这需要时间才能移动到另一个页面. 我怎样才能做到 ...

  6. linux 桌面显示天气,如何在Linux中显示天气条件作为壁纸 | MOS86

    配件 - WeatherPaper 你应该看到你的桌面壁纸立即改变,以反映当前的天气状况. 要配置weatherpaper脚本,请转到您也可以使其在启动时运行. Location 您是在哪里输入您的位 ...

  7. oracle如何总计,如何在Oracle中产生分组小计和总计?

    问题陈述: 您想在Oracle中找出总数,小计和总计. 解决方案: Oracle ROLLUP函数使用从右到左将中间级别汇总到任何总计的方法在多个级别上执行分组.为了演示ROLLUP功能,我们将创建一 ...

  8. oracle显示多表数据,Oracle DB 使用连接显示多个表中的数据

    在Oracle9i之前的发行版中,该联接语法与美国国家标准协会(ANSI) 的标准不同.与以前发行版中的Oracle 专用联接语法相比,符合SQ • 编写SELECT语句,以使用等值联接和非等值联接访 ...

  9. oracle函数 授权,如何在Oracle中以普通用户身份运行dbms_crypto函数?

    我在Oracle中使用dbms_crypto.hash()函数时遇到问题. 我使用sqlplus作为"sys / passwd as sysdba"连接到数据库服务器, 然后我安装 ...

最新文章

  1. Tensorflow函数——tf.variable_scope()
  2. HarmonyOS 修改App 的name
  3. USACO 做题小结
  4. 5G NGC — NEF Traffic Influence Service
  5. Cookie/Session机制详解--如何区分不同用户
  6. css实现图片自适应容器的几种方式
  7. 2.1 Mini-batch 梯度下降-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  8. 各种软件的含义和特点
  9. Python中的网络编程之UDP
  10. Codeforces Round #408 (Div. 2)
  11. 抓localhost包 - rawcap
  12. 如何在Swift中使用CoreData设置有用的自动完成UITextField
  13. Java String转int、float、double
  14. java的split的正则_Java正则表达式之split()方法实例详解
  15. 【JY】ABAQUS混凝土CDP插件分享
  16. ajax直接调用数据库数据库数据库,AJAX调用mysql数据库简单例子(示例代码)
  17. 行测-图形推理-2-黑白格类
  18. 小程序和钉钉发版后老版缓存的问题调研
  19. 域账户登录本地计算机用户名,如何实现域账户domain/user登陆时自动添加到本地计算机poweruser用户组...
  20. 视频安防“上帝视角“的畅想

热门文章

  1. 《Android群英传》读书笔记9.Android系统信息与安全机制
  2. 虚拟DOM中的key
  3. JAVA毕业设计飞机航班信息查询系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库
  4. hexo博客kaze主题自定义社交链接
  5. SAP 什么是统驭科目
  6. 【博弈论】纳什定理及其证明
  7. pandas行/列删除
  8. NVIDIA JETSON TX1刷机重装系统笔记
  9. QGis加载网络地图
  10. 兼容性向前还是向后_向后兼容性与向前兼容性