----建立的存儲過程 create or replace procedure addTest(v1 in number, v2 in number,res out number) as begin res := v1 + v2; end addTest;
----PLSQL中調用存儲過程addTest declare rest number; begin addTest(2,33,rest); dbms_output.put_line('計算結果: '||rest); end;
執行結果 java
Java代碼中調用存儲過程addTest
package com.callProcedure; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Types; public class CallSimpleProcedure { public static void main(String[] args) { // 加載驅動 try { Class.forName("oracle.jdbc.driver.OracleDriver"); // 獲取連接 Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@IP地址:1521:數據庫名稱", "數據庫登陸名", "數據庫登陸密碼"); // 獲取調用存儲過程的對象 CallableStatement cs = conn.prepareCall("{call addTest(?,?,?)}"); // 爲存儲過程參數賦值 cs.setInt(1, 23);// 輸入值 cs.setInt(2, 20);// 輸入值 cs.registerOutParameter(3, Types.NUMERIC);// 輸出值類型 // 執行 cs.execute(); // 獲取輸出值 int result = cs.getInt(3); System.out.println("java 調用存儲過程獲取輸出值:\t" + result); // 關閉鏈接 conn.close(); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); } } }
執行結果: sql