[oracle@db ~]$ sqlplus oratt/oracle
SQL*Plus: Release 11.2.0.3.0 Production on Thu Feb 7 18:16:27 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning and Real Application Testing options
SQL> ! cat Factorial.java
public class Factorial {
public static int getFactorialValue(int a) {
if (a == 1) return 1;
else return a * getFactorialValue(a - 1);
}
}
SQL>
There are a lot of options for loading the java class (I'll describe only two of them).1. Load the file by using loadjava utility
SQL> ! loadjava -user oratt/oracle Factorial.java SQL> select object_name, object_type from user_objects where object_type like 'J%'; SQL> select object_name, object_type from user_objects where object_type like 'J%'; OBJECT_NAME OBJECT_TYPE ------------------------------ ------------------- Factorial JAVA SOURCE Factorial JAVA CLASS SQL>2. Create java statement Before that let's delete Factorial class from database
SQL> !dropjava -user oratt/oracle Factorial.java
SQL> select object_name, object_type from user_objects where object_type like 'J%';
no rows selected
SQL> CREATE JAVA SOURCE NAMED "Factorial" AS
2 public class Factorial {
3 public static int getFactorialValue(int a) {
4 if (a == 1) return 1;
5 else return a * getFactorialValue(a - 1);
6 }
7 }
8 /
Java created.
SQL> select object_name, object_type from user_objects where object_type like 'J%';
OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------
Factorial JAVA SOURCE
Factorial JAVA CLASS
SQL>
Now, create a package.
SQL> CREATE OR REPLACE PACKAGE java_pack AS
2 function factorial_func(x in pls_integer) return pls_integer;
3 END java_pack;
4 /
Package created.
SQL> CREATE OR REPLACE PACKAGE BODY java_pack AS
2
3 function factorial_func(x in pls_integer)
4 return pls_integer
5 as language java
6 name 'Factorial.getFactorialValue (int) return int';
7
8 END java_pack;
9 /
Package body created.
SQL>
SQL> exec dbms_output.put_line(java_pack.factorial_func(15));
2004310016
PL/SQL procedure successfully completed.
SQL> select java_pack.factorial_func(10) from dual;
JAVA_PACK.FACTORIAL_FUNC(10)
----------------------------
3628800
SQL>
Is you can see, its very easy to use Java code in PLSQL. There is only one thing you should remember - it is a Oracle Database JVM version (DB Version 11.2 - Java 1.5.0 (1.5.0_01))
I would recommend you to read the following notes:- What Version of Java is Compatible With The Database JVM? [ID 438294.1]
- How to identify JDK version running in Oracle Database JVM [ID 331673.1]
Комментариев нет:
Отправить комментарий