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();
}
}
?、颉л敵鰠档那闆r
過程名稱為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存儲過程,我們在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
以上即是在Oracle中的SQL PLUS中使用JAVA程序來產生Oracle存儲過程的演示例子,演示了其基本語法的實現跟簡單的功能實現,可以看出在JAVA跟Oracle之間存在很多有趣的用法,因為oracle中有java虛擬機,使得Oracle變得更加有趣更加豐富多彩