Java跟Oracle之間最常用的是Java調用Oracle的預存程序,以下簡要說明下Java如何對Oracle預存程序進行調用。
Ⅰ、Java調用Oracle預存程序【不帶輸出參數】
過程名稱為pro1,參數個數1個,資料類型為整形資料。
import java.sql.*;
public class ProcedureNoArgs {
public static void main(String args[]) throws Exception {
// 載入Oracle驅動
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// 獲得Oracle資料庫連接
Connection conn = DriverManager.getConnection(
" jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd);
// 建立預存程序的對象
CallableStatement c = conn.divpareCall(" {call pro1(?)} ");
// 給Oracle預存程序的參數設定值 ,將第一個參數的值設定成188
c.setInt(1, 188);
// 執行Oracle預存程序
c.execute();
conn.close();
}
}
Ⅱ、JAVA調用Oracle預存程序【帶輸出參數的情況】
過程名稱為pro2,參數個數2個,資料類型為整形資料,傳回值為整形類型
import java.sql.*;
public class ProcedureWithArgs {
public static void main(String args[]) throws Exception {
// 載入Oracle驅動
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// 獲得Oracle資料庫連接
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd);
// 建立Oracle預存程序的對象,調用預存程序
CallableStatement c = conn.divpareCall("{call pro2(?,?)}");
// 給Oracle預存程序的參數設定值 ,將第一個參數的值設定成188
c.setInt(1, 188);
// 註冊預存程序的第二個參數
c.registerOutParameter(2, java.sql.Types.INTEGER);
// 執行Oracle預存程序
c.execute();
// 得到預存程序的輸出參數值並列印出來
System.out.println(c.getInt(2));
conn.close();
}
}
以上即是在JAVA中調用Oracle預存程序的最簡單的執行個體,接下來將介紹有關JAVA跟Oracle預存程序的其他方面內容。
二、使用JAVA建立Oracle預存程序
先看下如何使用JAVA來編寫Oracle預存程序,我們在Oracle的sql plus中編寫語句。
Ⅰ、啟動SQL PLUS
Ⅱ、編寫JAVA類,定義JAVA類別名,本預存程序為簡單地輸出傳入參數的平方值。
create or replace and compile java source named "PF" as
/**
* 通過JAVA類來 建立Oracle預存程序
*/
package org.oraclejava.pro;
public class javaCreatePro {
public static String test(int num) {
return num + "的平方為: " + num * num;
}
}
Ⅲ、將JAVA類中的方法test建立為一個Oracle函數方法
create or replace function PF_FUN(name integer) return varchar2 as language java name 'org.oraclejava.pro.javaCreatePro.test(java.lang.Integer) return java.lang.String';
Ⅳ、在控制台直接調用建立的Oracle函數
select PF_FUN(10) from dual;
Ⅴ、輸出結果
10的平方為:100