`
Action-人生
  • 浏览: 104785 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Oracle PL SQL将金额数字转换成大写

阅读更多
http://blog.sina.com.cn/s/blog_6a3922be0101a72t.html
CREATE OR REPLACE FUNCTION SMALITOBLG(
SMALLMONEY VARCHAR2
)
RETURN VARCHAR2 IS
BIGWRITE VARCHAR2(54); -- 用于负担会答谢的钱数
BIGNUM VARCHAR(2);     -- 用于存放每一个阿拉伯数字对应的汉子
RMB VARCHAR(2);        -- 用于存放人民币单位
MONEYPLACE NUMBER;     -- 用于确定人民币的精度,最多只能精确到分
DOTPLACE NUMBER;       -- 确定小数点的位置
MONEYNUM NUMBER;       -- 人民币的位置
MYEXCEPTION EXCEPTION; -- 自定义异常
BEGIN
 
   DOTPLACE := INSTR(SMALLMONEY,'.');
 
   IF(LENGTH(SMALLMONEY) > 14) OR ((LENGTH(SMALLMONEY) > 12) AND (DOTPLACE = 0)) THEN
       RAISE MYEXCEPTION;
   END IF;
 
   IF DOTPLACE = 0 THEN
      MONEYPLACE := 0;
   ELSE
      MONEYPLACE := DOTPLACE - LENGTH(SMALLMONEY);
   END IF;
 
   FOR MONEYNUM IN REVERSE 1..LENGTH(SMALLMONEY) LOOP
   
     IF MONEYNUM <> DOTPLACE THEN
      
       CASE SUBSTR(SMALLMONEY,MONEYNUM,1)
          WHEN '1' THEN BIGNUM := '壹';
          WHEN '2' THEN BIGNUM := '贰';
          WHEN '3' THEN BIGNUM := '叁';
          WHEN '4' THEN BIGNUM := '肆';
          WHEN '5' THEN BIGNUM := '伍';
          WHEN '6' THEN BIGNUM := '陆';
          WHEN '7' THEN BIGNUM := '柒';
          WHEN '8' THEN BIGNUM := '捌';
          WHEN '9' THEN BIGNUM := '玖';
          WHEN '0' THEN BIGNUM := '零';
       END CASE;
       CASE MONEYPLACE
          WHEN '-2' THEN RMB := '分';
          WHEN '-1' THEN RMB := '角';
          WHEN '0' THEN RMB := '元';
          WHEN '1' THEN RMB := '拾';
          WHEN '2' THEN RMB := '佰';
          WHEN '3' THEN RMB := '仟';
          WHEN '4' THEN RMB := '萬';
          WHEN '5' THEN RMB := '拾';
          WHEN '6' THEN RMB := '佰';
          WHEN '7' THEN RMB := '仟';
          WHEN '8' THEN RMB := '亿';
          WHEN '9' THEN RMB := '拾';
          WHEN '10' THEN RMB := '佰';
          WHEN '11' THEN BIGNUM := '仟';
       END CASE;
       MONEYPLACE := MONEYPLACE + 1;
       IF BIGWRITE IS NULL THEN
         BIGWRITE := BIGNUM || RMB;
       ELSE
         BIGWRITE := BIGNUM || RMB || BIGWRITE;
       END IF;
     END IF;
   END LOOP;
   RETURN BIGWRITE;
   EXCEPTION -- 异常处理部分
   WHEN MYEXCEPTION THEN
      DBMS_OUTPUT.PUT_LINE('该函数只能转换长度不大于14位或整数位不大于12位的钱数!');
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('不是有效的钱数!');
END SMALITOBLG;
分享到:
评论

相关推荐

    Oracle中金额大小写转换

    在Oracle数据库中,进行金额数字到大写汉字的转换是一个常见的需求,特别是在处理财务数据时。Oracle提供了一些内置函数和自定义方法来实现这个功能。本文将深入探讨如何在Oracle中进行这种转换,并以PSQL...

    Oralce数据库SQL和pl_sql实例教程

    Oracle数据库是世界上最流行的数据库管理系统之一,SQL(Structured Query Language)是用于管理关系数据库的标准语言,而PL/SQL是Oracle数据库特有的编程语言,扩展了SQL的功能,使得能够编写复杂的存储过程和...

    Oracle PL SQL语言基础

    内置函数包括数学函数、字符串函数、日期时间函数等,例如:MOD()用于求余数,UPPER()将字符串转换为大写。用户定义函数可以根据需求创建,返回单个值或记录,可接受参数,并执行自定义逻辑。 四、过程和函数 1. ...

    oracle金额转换

    在Oracle数据库中,处理金融数据时,我们经常需要对金额进行格式化,使其符合特定的显示标准,例如将数字转换为大写的汉字或者添加货币符号等。"Oracle 金额转换"是一个关键的操作,用于提高数据的可读性和合规性。...

    Oracle PL/SQL语言基础

    PL/SQL使用的字符集包括所有大写和小写字母、0-9的阿拉伯数字以及各种操作符。这些字符构成了PL/SQL程序的基础。 #### 四、PL/SQL标识符 - **最大长度**:30个字符 - **不区分大小写**:尽管PL/SQL不区分大小写,...

    汉字大写金额转换(PL/SQL)

    代码功能:将输入的数值,转换为汉字的大写金额. 输入的数值可以是整数,也可以带小数位,还可以带千分位符. 代码作用:通过此段代码,综合地演示了ORACLE内置函数的用法.可以将此段代码改写为存储函数,供程序调用 代码...

    Oracle PL/SQL Best Practices

    ### Oracle PL/SQL最佳实践概览 #### 一、引言 自从1994年史蒂文·菲厄斯坦(Steven Feuerstein)开始撰写关于Oracle PL/SQL语言的文章以来,该领域的信息来源已经从最初的寥寥无几发展到今天的形式多样。现在,有...

    ORACLE与SQLSERVER中的语法区别

    在 ORACLE 中,使用 `TO_DATE` 函数来将字符串转换为日期,而在 SQL Server 中,使用 `CONVERT` 函数。例如: SQL Server: `SELECT * FROM tablename WHERE lrsj &gt;= '2002-11-11'` ORACLE: `SELECT * FROM ...

    oracle/SQL和PL/SQL课堂笔记

    Oracle SQL和PL/SQL是数据库管理和编程的重要工具,主要用于处理Oracle数据库中的数据。这篇课堂笔记主要涵盖了基础的SQL查询语法和部分PL/SQL概念。 首先,SQL查询的基础是从数据库中选择数据。`SELECT`语句用于...

    oracle Pl/sql编程经典入门

    ### Oracle PL/SQL 编程经典入门知识点解析 #### 一、简单程序 在 Oracle PL/SQL 中,简单程序通常指的是基本的 SQL 查询语句,用于检索数据库中的数据。例如,根据特定条件筛选记录。 ##### 示例 - **查询薪资...

    Oracle_PL(SQL)单行函数和组函数及使用

    ### Oracle_PL(SQL)单行函数和组函数及使用 #### 一、概述 在Oracle数据库中,SQL 和 PL/SQL 提供了大量的内置函数,这些函数可以极大地提高开发效率和简化查询逻辑。根据处理数据的不同方式,这些函数可以分为...

    Oracle_PL(SQL).rar_oracle

    Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与高级编程语法相结合,使得数据库管理、数据处理和业务逻辑的实现更为高效。在Oracle PL/SQL中,单行函数和组函数是两个核心概念,它们在数据操作和...

    DBA对Oracle SQL编写规范的总结

    接下来的部分将详细介绍PL/SQL的基本编码规范,包括命名规则、过程及匿名块命名规范、数据库代码接口管理等方面。这些规范同样非常重要,能够确保代码的一致性和可维护性。 ##### 3.1 命名规范 - **规范要求**:在...

    Oracle SQL*Plus Pocket Reference, 2nd Edition

    - **大写字母**:用于表示SQL*Plus、SQL或PL/SQL关键字。 - **小写字母**:用于表示用户定义的项,如表名等。 - **斜体**:用于表示文件名、强调的新术语以及参数名称。 - **固定宽度字体**:用于代码示例展示。 - *...

    SQLServer数据库导入Oracle

    "SQLServer数据库导入Oracle详解" 在数据库管理中,数据迁移是一个非常重要的步骤,特别是在不同数据库管理...但是,通过使用PL/SQL Developer和了解数据库管理系统之间的差异,我们可以成功地将数据迁移到Oracle中。

    Oracle_SQL_PL/SQL书写规范性能优化技巧.doc

    PL/SQL书写规范 1、 语句中出现的所有表名、字段名全部小写,系统保留字、内置函数名、Sql保留字大写。 2、 连接符or、in、and、以及=、、&gt;=等前后加上一个空格。 3、 对较为复杂的sql语句加上注释,说明算法、...

    oracle (sql语法) .doc

    Oracle SQL语法是数据库管理员和开发人员在操作Oracle数据库时必须掌握的重要技能。下面将详细解释文档中提及的一些关键知识点。 一、排序显示 在Oracle SQL中,`ORDER BY`子句用于对查询结果进行排序。默认是升序...

Global site tag (gtag.js) - Google Analytics