Java
Java dan Oracle Ref Cursor
0Topik kali ini adalah membuat program java yang memanggil oracle store procedure yang outputnya ref cursor. Karena saya sendiri kadang sering lupa nah akhirnya coba tulis disini saja, siapa tahu nantinya bisa berguna.
Pertama kita harus punya procedure yang outputnya ref cursor untuk dipanggil dari program java. Untuk hal ini bisa melihat postingan sebelumnya Oracle cursor
Bismillah kita mulai kodingnya
/*
Import Class
*/
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Types;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleCallableStatement;
import oracle.jdbc.driver.OracleTypes;
import oracle.jdbc.driver.OracleResultSet;
public class JavaOraCursor {
final static String driverClass = "oracle.jdbc.driver.OracleDriver";
final static String connectionURL = "jdbc:oracle:thin:@192.168.1.9:1521:NEURON";
final static String userID = "HR";
final static String userPassword = "HR";
Connection con = null;
/*
Constructor
*/
public JavaOraCursor (){
try {
Class.forName(driverClass).newInstance();
this.con = DriverManager.getConnection(connectionURL, userID, userPassword);
}catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void ExecuteCursor(){
OracleCallableStatement oraCallStmt = null;
OracleResultSet empResultSet = null;
try {
oraCallStmt = (OracleCallableStatement) con.prepareCall(
"{call PKG_EMPLOYEE.getEmployeeData(?,?)}"
);
oraCallStmt.setInt(1, 20);
oraCallStmt.registerOutParameter(2, OracleTypes.CURSOR);
oraCallStmt.execute();
empResultSet = (OracleResultSet) oraCallStmt.getCursor(1);
while (empResultSet.next()) {
System.out.println(
" - " +
empResultSet.getString(2) + " (" + empResultSet.getInt(1) + ")" );
}
System.out.println();
oraCallStmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void closeConnection() {
try {
System.out.print(" Closing Connection...\n");
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args)
throws java.lang.InterruptedException {
JavaOraCursor mainProg= new JavaOraCursor ();
mainProg.ExecuteCursor();
mainProg.closeConnection();
}
}
MD5 Function di Oracle
0Suatu ketika saya ada keperluan menggunakan fungsi MD5 di oracle. karena mencari-cari fungsi built in di oracle tidak ketemu, atau mungkin tidak ada akhirnya saya memutuskan untuk membuat Java Store Procedure. Untuk mempelajari lebih detail langkah-langkah membuat java store procedure anda bisa melihat postingan sebelumnya Java Store Procedure .
Langkah pertama membuat fungsi md5 di java
import java.security.MessageDigest;
public class MD5 {
public static String getMD5(String message) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
String md5string="";
StringBuffer sb = new StringBuffer();
byte buf[] = message.getBytes();
byte[] md5 = md.digest(buf);
System.out.println(message);
for( int i = 0 ; i < md5.length ; i++ ) {
String tmpStr = "0"+Integer.toHexString( (0xff & md5[i]));
sb.append(tmpStr.substring(tmpStr.length()-2));
}
md5string = sb.toString();
return (md5string);
}
catch (Exception e)
{
System.out.println(e);
return "0";
}
}
}
Kemudian kita compile
#javac MD5.java
Jika tidak ada error akan menghasilkan MD5.class, kemudian kit aload ke oracle
loadjava -resolve -user scott/tiger MD5.class
Publish fungsi Java Store Procedure dengan membuat interface di oracle :
CREATE OR REPLACE FUNCTION GetMD5(str in varchar) RETURN VARCHAR2
as LANGUAGE JAVA
NAME 'MD5.getMD5(java.lang.String) return java.lang.String';
kemudian kita coba
select GetMD5('gatotkaca') from dual;
GETMD5('gatotkaca')
============================
4495ca9b8bb44554754c5ed33a33fef9
selamat mencoba !!!
semua script yang ada pada halaman ini bisa anda download di sini