Mulai dari Oracle versi 8i oracle menyediakan membuat Java Store Procedure didalam database. Java Store Procedure biasa digunakan untuk membangung fungsi-fungsi yang tidak disediakan di oracle atau utilitas yang mungkin lebih efisien dan mudah dikerjakan menggunakan pemrograman Java. Untuk mengetahui apakah database kita sudah bisa kita gunakan untuk membuat Java Store Procedure kita bis amengecek dengan sintak sebagai berikut :

 SQL> describe dbms_java

jika perintah diatas memberikan pesan error seperti :

ERROR:
  ORA-04043: object dbms_java does not exist

artinya Package DBMS_JAVA belum terinstall di database kita, solusinya kita harus menginstall package tersebut yang sudah disediakan oleh oracle

#sqlplus / as sysdba
SQL>
   @$ORACLE_HOME/javavm/install/initjvm.sql;
   @$ORACLE_HOME/xdk/admin/initxml.sql;
   @$ORACLE_HOME/xdk/admin/xmlja.sql;
   @$ORACLE_HOME/javavm/install/init_jis.sql $ORACLE_HOME;
   @$ORACLE_HOME/javavm/install/jisaephc.sql $ORACLE_HOME;
   @$ORACLE_HOME/javavm/install/jisja.sql $ORACLE_HOME;
   @$ORACLE_HOME/javavm/install/jisdr.sql 2481 2482;
   @$ORACLE_HOME/jsp/install/initjsp.sql;
   @$ORACLE_HOME/jsp/install/jspja.sql;
   @$ORACLE_HOME/rdbms/admin/initjms.sql;
   @$ORACLE_HOME/rdbms/admin/initrapi.sql;
   @$ORACLE_HOME/rdbms/admin/initsoxx.sql;
   @$ORACLE_HOME/rdbms/admin/initapcx.sql;
   @$ORACLE_HOME/rdbms/admin/initcdc.sql;
   @$ORACLE_HOME/rdbms/admin/initqsma.sql;
   @$ORACLE_HOME/rdbms/admin/initsjty.sql;
   @$ORACLE_HOME/rdbms/admin/initaqhp.sql;

Jika semua environment sudah terinstall dan siap kita akan membuat Java Store Procedure, berikut langkah-langkahnya :

  1. Membuat Java Class
  2. Kita ingin membuat fungsi Hello World

            public class PrintHello{
                  public static String Print(String name) {
                          return "Hello My Name "+name;
                 }
           }
    
    Compile Script diatas
    javac PrintHello.java
    
  3. Load dan Resolve Java Class ke Oracle
  4. Java class sudah berhasil dihasilkan akan kia load masuk ke database dengan menggunakan utilitas yang sudah disediakan oleh oracle yaitu loadjava

    # loadjava
    loadjava: Usage: loadjava [-definer] [-encoding encoding] [-force] [-genmissing] [-genmissingjar jar] [-grant grants] [-help] [-nousage] [-noverify] [-oci8] [-order] [-resolve] [-resolver resolver] [-schema schema] [-synonym] [-thin] [-tableschema schema] [-user user/password@database] [-verbose] classes..jars..resources..properties...
    

    Untuk kasus diatas kita gunakan option sederhana seperti berikut :

    loadjava -user scott/tiger PrintHello.class
    
  5. Publish Java Class
  6. untuk setiap java class kita harus membuatkan fungsi atau procedure sesuai dengan definisi java class.

    SQL>
    CREATE OR REPLACE FUNCTION PrintHello(name in varchar2) RETURN VARCHAR2
    as LANGUAGE JAVA
    NAME 'PrintHello.Print(java.lang.String) return java.lang.String';

  7. Panggil Store Procedure
  8. Kita coba panggil hasil fungsi di oracle

    SQL> select PrintHello('Gatotkaca') from dual;