首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 呼叫 Oracle 預存程序與函數完整指南

     編輯:Java 相關知識

示範使用 CallableStatement 呼叫 Oracle 預存函數,涵蓋無參、IN、OUT、IN/OUT 參數與回傳值的完整模式。

核心 API 模式

// 1. 無參函數,回傳 VARCHAR
CallableStatement cs = conn.prepareCall("{? = call myfunc}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.execute();
String ret = cs.getString(1);

// 2. 一個 IN 參數
cs = conn.prepareCall("{? = call myfuncin(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.setString(2, "input value");
cs.execute();
ret = cs.getString(1);

// 3. 一個 OUT 參數
cs = conn.prepareCall("{? = call myfuncout(?)}");
cs.registerOutParameter(1, Types.VARCHAR); // 回傳值
cs.registerOutParameter(2, Types.VARCHAR); // OUT 參數
cs.execute();
String retVal = cs.getString(1);
String outParam = cs.getString(2);

// 4. 一個 IN/OUT 參數
cs = conn.prepareCall("{? = call myfuncinout(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.registerOutParameter(2, Types.VARCHAR);
cs.setString(2, "initial value"); // 同時作為輸入
cs.execute();
retVal = cs.getString(1);
outParam = cs.getString(2); // 取得修改後的值

關鍵要點

  • 所有參數(含回傳值)均需 registerOutParameter 註冊 JDBC 型別
  • 參數索引從 1 開始:1 = 回傳值,2 = 第一個參數,以此類推
  • IN/OUT 參數需先 setXxx 設定初始值,執行後再 getXxx 取得更新值
  • 使用 {? = call ...} 語法呼叫函數;呼叫程序用 {call ...}

實務建議:將呼叫邏輯封裝於 DAO 層,統一異常處理與資源釋放,避免在業務邏輯中直接操作 CallableStatement。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved