Oracle裡可以使用多種語言來編寫預存程序,比如Pro*C/C++,PL/SQL,COBOL,在Oracle8i開始支援用Java編寫預存程序。
如果非要寫預存程序的話,做為以Java謀生的我,首選用Java編寫,用PL/SQL需要記憶很多的文法(Pascal類的文法)和函數,遠不如使用Java/JDBC這麼輕車熟路。而且,DB2等資料庫都支援Java預存程序,所以不比為每一種資料學習一種編寫預存程序的方法了。
Java預存程序與一般的JDBC程式有所不同的是:
1.有安全限制,畢竟是在oracle內部啟動並執行,不允許訪問作業系統的資源,如檔案。
2.擷取資料庫聯結方式,connection = new OracleDriver().defaultConnection();
3.System.out,System.err,System.in等輸入輸出有所不同。可以利用某些命令重新導向。
下面用Java 預存程序寫一個Hello World的例子。
1)在plsqldeveloper裡,java source裡增加一個TestJava1類,
代碼
create or replace and compile java source named TestJava1 as
public class TestJava1
{
public static void test()
{
System.out.println("Hello");
}
}
執行它,以儲存並編譯。
2)增加一個procedure,執行如下命令:
代碼
create or replace procedure testJava1
as
language java name 'TestJava1.test()';
3)在command window裡輸入
代碼
SET SERVEROUTPUT ON;
CALL dbms_java.set_output(2000);
以使System.out重新導向到當前視窗;
在command window裡輸入,exec testJava1();
即可看到結果:
Hello
PL/SQL procedure successfully completed