Oracle数据库调用java程序--人民币数字转大写

JAVA Source

有的时候,我们需要在Oracle的Prodedure、Function中调用JAVA代码来实现功能,比方说下面的这个例子,调用JAVA代码来实现大小写金额的转换,如果这个代码用PL实现,难度还是有的,那如果我们先写成JAVA代码,然后通过调用,来实现,还是可以的。

CREATE or replace and compile java source named js_translater  
AS  
package com.yzupope.util;  
/*  
* 人民币大小写金额转化  
*/  
public class XhgUtil {  
  
  
  private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分";  
  
  
  private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖";  
  
  
  private static final double MAX_VALUE = 9999999999999.99D;  
  
  
  public static String trans(double v) {  
    if (v < 0 || v > MAX_VALUE)  
      return "参数非法!";  
    long l = Math.round(v * 100);//round(double a):返回最接近参数的long(返回值为static long)  
      
    if (l == 0)  
      return "零元整";  
    String strValue = l + "";  
    // j用来控制单位  
    int j = UNIT.length() - strValue.length();  
    String rs = "";  
    boolean isZero = false;  
    // i用来控制数  
    for (int i = 0; i < strValue.length(); i++, j++) {  
      char ch = strValue.charAt(i);  
      if (ch == '0') {  
        isZero = true;  
        if (UNIT.charAt(j) == '亿' || UNIT.charAt(j) == '万'  
            || UNIT.charAt(j) == '元') {  
          rs = rs + UNIT.charAt(j);  
          isZero = false;  
        }  
      } else {  
        if (isZero) {  
          rs = rs + "零";  
          isZero = false;  
        }  
        rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);  
      }  
    }  
    if (!rs.endsWith("角") && !rs.endsWith("分")) {  
      rs = rs + "整";  
    }  
    rs = rs.replaceAll("亿万", "亿");  
    return rs;  
  }  
}  

创建引用

CREATE OR REPLACE FUNCTION xchg(v NUMBER) RETURN VARCHAR2  
AS  
LANGUAGE JAVA NAME 'com.yzupope.util.XhgUtil.trans(double)return java.lang.String'; 

函数调用

select xchg(105.91) FROM dual;  

Where are java classes stored in Oracle?(如何查看呢)

SELECT object_name, object_type, status, TIMESTAMP  
FROM   user_objects  
WHERE  (object_name NOT LIKE 'SYS_%' AND object_name NOT LIKE 'CREATE$%' AND  
       object_name NOT LIKE 'JAVA$%' AND object_name NOT LIKE 'LOADLOB%')  
       AND object_type LIKE 'JAVA %'  
ORDER  BY object_type, object_name;  

工具查看

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 方案简介Toad――加速你的数据库设计、开发、测试和管理数据库的优异性能和高可用性源自于良好的数据库设计,Ques...
    layjoy阅读 6,660评论 1 14
  • 大人说我喜欢顶嘴。我是否认的。 顶嘴,顾名思义,就是说别人说一句,你抵一句回去。我认为我不是这样的。我不知道别...
    阿芙蓉_阅读 401评论 0 0
  • 【美帝中介】转让抵押不过户,13年雷克萨斯CT200,抵押小贷!违章包,车况漂亮,关键省油,3毛钱一公里,苏户无锡...
    青岛美帝阅读 164评论 0 0