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類 Java代碼 create or replace and compile java source named TestJava1 as public class TestJava1 { public static void test() { System.out.println("Hello"); } } create or replace and compile java source named TestJava1 as public class TestJava1 { public static void test() { System.out.println("Hello"); } } 執行它,以保存並編譯。 --2.增加一個procedure,執行如下命令: Java代碼 create or replace procedure testJava1 as language java name 'TestJava1.test()'; create or replace procedure testJava1 as language java name 'TestJava1.test()'; --3.在command window里輸入: Java代碼 SET SERVEROUTPUT ON; CALL dbms_java.set_output(2000); SET SERVEROUTPUT ON; CALL dbms_java.set_output(2000); 以使System.out重定向到當前窗口; 在command window里輸入,exec testJava1(); 即可看到結果: Hello PL/SQL procedure successfully completed