在Oracle中使用Java的存
1。 使用oracle的sql语句来创建:
e。g。 使用create or replace and compile java source named "" as
后边跟上java源程序。要求类的方法必须是public static的,才能用于存储过程。
1。SQL> create or replace and compile java source named "javademo1"
2。 2 as
3。 3 import java。sql。 *;
4。 4 public class JavaDemo1
5。 5 {
6。 6 public static void main(St...全部
1。 使用oracle的sql语句来创建:
e。g。 使用create or replace and compile java source named "" as
后边跟上java源程序。要求类的方法必须是public static的,才能用于存储过程。
1。SQL> create or replace and compile java source named "javademo1"
2。 2 as
3。 3 import java。sql。
*;
4。 4 public class JavaDemo1
5。 5 {
6。 6 public static void main(String[] argv)
7。 7 {
8。 8 System。
out。println("hello, java demo1");
9。 9 }
10。 10 }
11。 11 /
12。
13。Java 已创建。
14。
15。SQL> show errors java source "javademo1"
16。
没有错误。
17。
18。SQL> create or replace procedure javademo1
19。 2 as
20。 3 language java name 'JavaDemo1。
main(java。lang。String[])';
21。 4 /
22。
23。过程已创建。
24。
25。SQL> set serveroutput on
26。SQL> call javademo1();
27。
28。调用完成。
29。
30。SQL> call dbms_java。set_output(5000);
31。
32。调用完成。
33。
34。SQL> call javademo1();
35。
hello, java demo1
36。
37。调用完成。
38。
39。SQL> call javademo1();
40。hello, java demo1
41。调用完成。2。 使用外部class文件来装载创建
e。
g。 这里既然用到了外部文件,必然要将class文件放到oracle Server的某一目录下边。
1。public class OracleJavaProc
2。{
3。 public static void main(String[] argv)
4。
{
5。 System。out。println("It's a Java Oracle procedure。");
6。 }
7。}
8。
9。
10。SQL> grant create any directory to scott;
11。
12。授权成功。
13。
14。SQL> conn scott/tiger@iihero。oracledb
15。已连接。
16。SQL> create or replace directory test_dir as 'd:/oracle';
17。
18。目录已创建。
19。
20。SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc。CLASS')
21。
2 /
22。
23。Java 已创建。
24。
25。SQL> create or replace procedure testjavaproc as language java name 'OracleJavaProc。
main(java。lang。String[])';
26。 2 /
27。
28。过程已创建。
29。
30。SQL> call testjavaproc();
31。
32。调用完成。
33。
34。SQL> execute testjavaproc;
35。
36。PL/SQL 过程已成功完成。
37。
38。SQL> set serveroutput on size 5000
39。
SQL> call dbms_java。set_output(5000);
40。
41。调用完成。
42。
43。SQL> execute testjavaproc;
44。It's a Java Oracle procedure。
3。 我推荐的一种方法,直接使用loadjava命令远程装载并创建。
先创建一个类, e。g。
1。import java。sql。*;
2。import oracle。jdbc。*;
3。
4。
public class OracleJavaProc {
5。
6。 //Add a salgrade to the database。
7。 public static void addSalGrade(int grade, int losal, int hisal) {
8。
9。 System。out。println("Creating new salgrade for EMPLOYEE…");
10。
11。 try {
12。 Connection conn =
13。
DriverManager。getConnection("jdbc:default:connection:");
14。
15。 String sql =
16。 "INSERT INTO salgrade " +
17。
"(GRADE,LOSAL,HISAL) " +
18。 "VALUES(?,?,?)";
19。 PreparedStatement pstmt = conn。prepareStatement(sql);
20。
pstmt。setInt(1,grade);
21。 pstmt。setInt(2,losal);
22。 pstmt。setInt(3,hisal);
23。 pstmt。executeUpdate();
24。
pstmt。close();
25。 }
26。 catch(SQLException e) {
27。 System。err。println("ERROR! Adding Salgrade: "
28。
+ e。getMessage());
29。 }
30。 }
31。}
使用loadjava命令将其装载到服务器端并编译:
1。D:eclipse3。1workspacedbtest>loadjava -u scott/tiger@iihero。
oracledb -v -resolve Or
2。acleJavaProc。java
3。arguments: '-u' 'scott/tiger@iihero。oracledb '-v' '-resolve' 'OracleJavaProc。
java'
4。creating : source OracleJavaProc
5。loading : source OracleJavaProc
6。resolving: source OracleJavaProc
查询一下状态:
1。
连接到:
2。Oracle9i Enterprise Edition Release 9。2。0。1。0 - Production
3。With the Partitioning, OLAP and Oracle Data Mining options
4。
JServer Release 9。2。0。1。0 - Production
5。
6。SQL> SELECT object_name, object_type, status FROM user_objects WHERE object_type LIKE 'JAVA%';
7。
8。OBJECT_NAME
9。--------------------------------------------------------------------------------
10。
11。OBJECT_TYPE STATUS
12。------------------------------------ --------------
13。OracleJavaProc
14。
JAVA CLASS VALID
15。
16。OracleJavaProc
17。JAVA SOURCE VALID
测试一下存储过程:
1。SQL> create or replace procedure add_salgrade(id number, losal number, hisal num
2。
ber) as language java name 'OracleJavaProc。addSalGrade(int, int, int)';
3。 2 /
4。
5。过程已创建。
6。
7。
SQL> set serveroutput on size 2000
8。SQL> call dbms_java。set_output(2000);
9。
10。调用完成。
11。
12。SQL> execute add_salgrade(6, 10000, 15000);
13。
Creating new salgrade for EMPLOYEE…
14。
15。PL/SQL 过程已成功完成。
16。
17。SQL> select * from salgrade where grade=6;
18。
19。 GRADE LOSAL HISAL
20。---------- ---------- ----------
21。 6 10000 15000。收起