3、我推荐的一种方法,直接使用loadjava命令远程装载并创建。
先创建一个类, e.g.
- import java.sql.*;
- import oracle.jdbc.*;
-
- public class OracleJavaProc {
-
-
- 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 salgrade " +
- "(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命令将其装载到服务器端并编译:
- D:eclipse3.1workspacedbtest>loadjava -u scott/tiger@iihero.oracledb -v -resolve Or
- acleJavaProc.java
- arguments: '-u' 'scott/tiger@iihero.oracledb '-v' '-resolve' 'OracleJavaProc.java'
- creating : source OracleJavaProc
- loading : source OracleJavaProc
- resolving: source OracleJavaProc
|
查询一下状态:
- 连接到:
- Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
- With the Partitioning, OLAP and Oracle Data Mining options
- JServer Release 9.2.0.1.0 - Production
-
- SQL> SELECT object_name, object_type, status FROM user_objects WHERE object_type LIKE 'JAVA%';
-
- OBJECT_NAME
-
-
- OBJECT_TYPE STATUS
-
- OracleJavaProc
- JAVA CLASS VALID
-
- OracleJavaProc
- JAVA SOURCE VALID
|
测试一下存储过程:
- SQL> create or replace procedure add_salgrade(id number, losal number, hisal num
- ber) as language java name 'OracleJavaProc.addSalGrade(int, int, int)';
- 2 /
-
- 过程已创建。
-
- SQL> set serveroutput on size 2000
- SQL> call dbms_java.set_output(2000);
-
- 调用完成。
-
- SQL> execute add_salgrade(6, 10000, 15000);
- Creating new salgrade for EMPLOYEE...
-
- PL/SQL 过程已成功完成。
-
- SQL> select * from salgrade where grade=6;
-
- GRADE LOSAL HISAL
-
- 6 10000 15000
|