Oracle_PL-SQL_JavaSource_13
来源:互联网 发布:家庭网络布线交换机 编辑:程序博客网 时间:2024/06/06 02:28
JAVA Source
有的时候,我们需要在Oracle的Prodedure、Function中调用JAVA代码来实现功能,比方说下面的这个例子,调用JAVA代码来实现大小写金额的转换,如果这个代码用PL实现,难度还是有的,那如果我们先写成JAVA代码,然后通过调用,来实现,还是可以的。
创建
- --create or replace and compile java source named javasource_name
- --as
- --package package_name
- /*
- * java code here
- */
- 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;
当然也可以通过工具查看
转自:http://blog.csdn.net/yzupope/article/details/7945308
0 0
- Oracle_PL-SQL_JavaSource_13
- Oracle_PL-SQL_JavaSource_13
- Oracle_PL-SQL_10
- Oracle_PL/SQL
- ORACLE_PL/SQL远程连接
- 【1】Oracle_PL/SQL
- Oracle_PL/SQl_基本语法
- Oracle_PL/SQL-游标
- Oracle_PL/SQL 存储过程
- oracle_PL/SQL基础
- Oracle_PL/SQL基础
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现
- 1030. 完美数列(25):要考虑全面
- WinHTTP如何处理Cookie
- android_BroadcastReceiver 广播机制
- ImageButton focusable="false"不起作用
- C# 调用C++ dll问题总结一 ——无法找到dll
- Oracle_PL-SQL_JavaSource_13
- 六,存取控制器
- WinHTTP错误信息处理
- C++primer 4.3 C风格字符串--字符数组(strlen、strcpy、strcat)上
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- iOS开发利用zbar实现二维码扫描(支持64位) 及二维码生成
- Netty解决半包(TCP粘包/拆包导致)读写问题
- C#配置文件概述
- Android XML视图 平分效果