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