用oracle调用java的学习过程.docx
文本预览下载声明
oracle调用java
检查JVM
前提是数据库上需要安装java虚拟机(JVM),使用下面的语句查看
select * from dba_registry where comp_id = JAVAVM
为空,则未安装,请执行 $ORACLE_HOME/javavm/install/initjvm.sql安装.
方法1,用SQL直接创建JAVA法
创建java程序
使用create or replace and compile java source named name as
后边跟上java源程序。要求类的方法必须是public static的,才能用于存储过程。
create or replace and compile java source named javademo1
as
import java.sql.*;
public class JavaDemo1
{
public static void main(String[] argv)
{
System.out.println(hello, java demo1);
}
}
点击“执行”按钮,
检查创建结果
SELECT object_name, object_type, status FROM user_objects WHERE object_type LIKE JAVA%;
创建存储过程
创建一个存储过程调用JAVA类。
create or replace procedure javademo1
as
language java name JavaDemo1.main(java.lang.String[]);
刷新后,可以看到存储过程已经创建:
测试存储过程
执行调用存储过程。
call dbms_java.set_output(5000);
call javademo1();
方法2,用LoadJava加载外部Java程序
创建一个测试表
创建一个测试表
-- Create table
create table EMPLOYEE
(
GRADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER
)
创建Java程序
创建Java程序,注意不要有main函数。被调用的函数必须是静态static的。
import java.sql.*;
import oracle.jdbc.*;
public class OracleJavaProc {
//Add a salgrade to the database.
public static void addSalGrade(int grade, int losal, int hisal) {
System.out.println(Creating new salgrade for EMPLOYEE...);
try {
Connection conn =
DriverManager.getConnection(jdbc:default:connection:);
String sql =
INSERT INTO EMPLOYEE +
(GRADE,LOSAL,HISAL) +
VALUES(?,?,?);
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,grade);
pstmt.setInt(2,losal);
pstmt.setInt(3,hisal);
pstmt.executeUpdate();
pstmt.close();
}
catch(SQLException e) {
System.err.println(ERROR! Adding Salgrade:
+ e.getMessage());
}
}
}
用loadjava命令加载
用loadjava命令加载,-user参数是数据库连接串。
loadjava -user ipis/1@IPIS -o -v -f -r OracleJavaProc.java
检查加载结果
SELECT object_name, object_type, status FROM user_objects WHERE object_t
显示全部