Оракул и java играют довольно хорошо друг с другом, и это может быть новой идеей, если вы чувствуете себя любознательным. Java делает это довольно легко, но я далеко от оракула и не могу проверить. Это действительно больно, я не перед машиной оракула в данный момент. Чтобы убедиться, что я правильно запомнил, я использовал шаги отсюда
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
если вы получите правильные даты и результаты, давайте расскажем оракулу о нашей маленькой функции.
сначала вам понадобятся некоторые права пользователя:
GRANT 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')) *