Java

Java dan Oracle Ref Cursor

0

Topik 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 :D

/*
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

0

Suatu 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

Go to Top