java source(2)

來源:互聯網
上載者:User
Oracle sql語句建立java預存程序

使用Oracle sql語句來建立:

e.g. 使用


create or replace and compile java source named "<name>" as 

後邊跟上java來源程式。要求類的方法必須是public static的,才能用於預存程序。


SQL> 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");  
}  
}  

Java 已建立。


SQL> show errors java source "javademo1" 

沒有錯誤。


SQL> create or replace procedure javademo1  
as  
language java name 'JavaDemo1.main(java.lang.String[])';  

過程已建立。


SQL> set serveroutput on  
SQL> call javademo1(); 

調用完成。


SQL> call dbms_java.set_output(5000); 

調用完成。


SQL> call javademo1();  
hello, java demo1 

調用完成。


SQL> call javademo1();  
hello, java demo1 

調用完成。
2. 使用外部class檔案來裝載建立
e.g. 這裡既然用到了外部檔案,必然要將class檔案放到Oracle Server的某一目錄下邊。

授權成功。


SQL> conn scott/tiger@iihero.Oracledb 

已串連。
 


SQL> create or replace directory test_dir as 'd:\Oracle'; 

目錄已建立。


SQL> create or replace java class using bfile(test_dir, 'OracleJavaProc.CLASS')  
2 / 

Java 已建立。


SQL> create or replace procedure testjavaproc as 
language java name 'OracleJavaProc.main(java.lang.String[])';  
2 / 

過程已建立。


SQL> call testjavaproc(); 

調用完成。


SQL> execute testjavaproc; 

PL/Oracle SQL 過程已成功完成。


SQL> set serveroutput on size 5000  
SQL> call dbms_java.set_output(5000); 

調用完成。


SQL> execute testjavaproc;  
It's a Java Oracle procedure. 

3. 我推薦的一種方法,直接使用loadjava命令遠程裝載並建立。
先建立一個類, e.g.


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 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  

以上的相關內容就是對如何建立java預存程序,即如何使用Oracle sql語句來建立的內容介紹,望你能有所收穫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.