oracle调用JAVA类的方法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > oracle调用JAVA类的方法

oracle调用JAVA类的方法

 2013/10/8 13:29:18  flycars001  程序员俱乐部  我要评论(0)
  • 摘要:oracle调用JAVA类的方法主要有以下三种:1.用loadjava方法装载;可能是调试方便,据说这种方法比较通用。c:\test\hello.javapublicclasshello{publicstaticvoidmain(String[]args){System.out.println("Hello");helloh=newhello();h.insertM(9);}publicstaticvoidinsertM(intpid){System.out.println
  • 标签:方法 ORA Java Oracle

oracle调用JAVA类的方法主要有以下三种:

1. 用loadjava方法装载;

可能是调试方便,据说这种方法比较通用。
c:\test\hello.java


public class hello
{
?
?public static void main(String[] args)
?{
??System.out.println("Hello");
??hello h = new hello();
??h.insertM(9);
?}
?public static void insertM(int pid)
?{
??System.out.println("This is the method insertM.");
?}
}


?C:\test>loadjava -u?test/test@mydb?-v -resolve hello.java

SQL> create procedure prc_hehe as language java name 'hello.main(java.lang.String[])
? 2? /

过程已创建。

SQL> call prc_hehe();

调用完成。

SQL> set serveroutput on size 2000
SQL> call prc_hehe();

调用完成。

SQL> exec dbms_java.set_output(2000);

PL/SQL 过程已成功完成。

SQL> call prc_hehe();
Hello
This is the method insertM.

调用完成。

SQL>show errors;

?

修改java类,先删除再装载,方法:

dropjava -u?test/test@mydb?-v -resolve hello.java

loadjava -u?test/test@mydb?-v -resolve hello.java

?

2. 用sql语句创建

create or replace and compile java source named hehe
AS
public class hello
{
?public static void msg(String name)
?{
??System.out.println("hello,"+name);
?}
};

?

create or replace procedure prc_hehe
(
?????? p_name VARCHAR2
)
as
language java name 'hello.msg(java.lang.String)';

/

-- 调用结果

SQL> call prc_hehe('oopp');
hello,oopp

?

3. 用外部class文件来装载创建

create or replace directory CLASS_DIR? as 'c:\test';

?

create or replace java class using bfile(class_dir,'hello.class');

?

create or replace procedure prc_hello
(
?????? p_name VARCHAR2
)
as
language java name 'hello.msg(java.lang.String)';

-- 测试结果

SQL> call prc_hello('java');
java

?

4. 可能出现的错误

SQL> call prc_hello('Jerry');
call prc_hello('Jerry')
???? *
第 1 行出现错误:
ORA-29516: Aurora 断言失败: Assertion failure at eox.c:359
Uncaught exception System error:?? java/lang/UnsupportedClassVersionError

?

原因:机器装了多个java版本,oracle的java版本低于环境变量设置的版本。

解决方法:用$ORACLE_HOME/jdk/javac 重新编译java文件

发表评论
用户名: 匿名