Oracle 和 java 可以很好地相互配合,如果您喜欢冒险,这可能是一个新想法。 Java 很容易做到这一点,但我远离 oracle 盒子并且无法测试。这真的很痛,我现在不在预言机前。为了确保我没有记错,我使用了这里的步骤
http://www.dba-oracle.com/tips_oracle_sqlj_loadjava.htm
然后我用谷歌搜索了这个,这几乎是我们将在下面做的逐字逐句:
http://docstore.mik.ua/orelly/oracle/guide8i/ch09_03.htm
/****
*java and oracle playing together.
*/
import java.util.Date;
public class hex2Date{
//this is if you want to call the java function from a command line outside of oracle
public static void main (String args[]) {
System.out.println ( convert (args[0]) );
}
public static Date convert(String inHexString){
try{
Date dateResult = new Date(Long.parseLong(inHexString,16));
}catch (NumberFormatException e){
// do something with the exception if you want, recommend at least throwing it.
//throw(e,'some extra message');
}
return dateResult;
}
}
将该文件作为 Hex2Date.java 保存在“yourJava”目录中,并从该目录类型的 cmd 行中保存:
javac Hex2Date.java
现在输入:
java Hex2Date.java 0x4A273F
如果你得到了正确的日期和结果,让我们告诉 oracle 我们的小功能。
您首先需要一些用户权限:
在此处将 JAVAUSERPRIV 授予您的用户;
输入这个:
loadjava -user scott/tiger -resolve Hex2Date.class
现在把它包装在 pl/sql 中,这样你就可以在 pl/sql 中调用它了:
/* java function plsql wrapper: hex2Date.sf */
CREATE OR REPLACE FUNCTION hex2Date ( inHexString IN VARCHAR2) RETURN DATE AS LANGUAGE JAVA NAME 'Hex2Date.convert(java.lang.String) return Date'; /
现在,从 sql 提示符运行它:
SQL> exec DBMS_OUTPUT.PUT_LINE (hex2Date('0x4A273F'))