前提
Java呼び出しには、JVMコンポーネントがインストールされている必要がある。
下記SQLで確認。インストールされていなければ追加必要
SQL> select comp_name from dba_registry order by 1;
COMP_NAME
--------------------------------------------------------------------------------
JServer JAVA Virtual Machine #JVM
Oracle Database Catalog Views #必須
Oracle Database Java Packages #JVM
Oracle Database Packages and Types #必須
Oracle Workspace Manager #必須
Oracle XDK #JVM
Oracle XML Database #12cより必須
マニュアルの手順に従い稼働確認 javaのVersionを表示する
ソース作成
$ cat Version.java
public class Version
{
public static String getver()
{
return System.getProperty("java.version");
}
}
コンパイル
$ /u01/app/oracle/product/12.1.0/dbhome_1/jdk/bin/javac Version.java
登録
$ loadjava -user SYS Version.java
Password:
*********
javaの呼び出し
$ sqlplus / as sysdba
SQL> create function getver return varchar2
2 as language java
3 name 'Version.getver() return java.lang.String';
4 /
ファンクションが作成されました。
SQL> var str varchar2(50);
SQL> call getver() into :str;
コールが完了しました。
SQL> print str;
STR
--------------------------------------------------------------------------------
1.6.0_71
DBHOMEのjavaとバージョンが少し異なる
$ u01/app/oracle/product/12.1.0/dbhome_1/jdk/bin/java -version
java version "1.6.0_75"
Java(TM) SE Runtime Environment (build 1.6.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 20.75-b01, mixed mode)