Javaからプロシージャを呼び出すサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
package com.confrage; import java.sql.Array; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Types; public class TestProc{ public static void main(String[] args) { Connection conn = null; String path = "jdbc:oracle:thin:@localhost:1521:orcl"; String id = "USER001"; String pw = "USER001"; String sql = "CALL PACK.proc001(?,?,?,?,?,?)";//パッケージ名.プロシージャ名 try { // JDBCドライバをロード Class.forName("oracle.jdbc.driver.OracleDriver"); // DBへのコネクションを作成 conn = DriverManager.getConnection(path, id, pw); conn.setAutoCommit(false); // 実行するプロシージャを指定してパラメータっをセットする try (CallableStatement cs = conn.prepareCall(sql)) { // OUTパラメータ cs.registerOutParameter(4, Types.INTEGER); cs.registerOutParameter(5, Types.VARCHAR); cs.registerOutParameter(6, Types.ARRAY, "INFOARRAY"); // INパラメータ cs.setInt(1, 100); cs.setString(2, "2"); // プロシージャを実行する cs.executeUpdate(); // 実行結果取得 int ret = cs.getInt(4); String retMsg = cs.getString(5); Array arr = cs.getArray(6); Object[] val = (Object[])arr.getArray(); } } catch (Exception ex){ } finally { try { conn.close(); } catch (SQLException){ throw new RuntimeException; } } } } |