JDBCを使用してデータベースのFUNCTION(ファンクション)を実行するサンプルです。
以下のサンプルでは、Oracleデータベースを対象としています。
サンプルソース
接続するデータベース情報は以下の通りとします。
<DB情報>
・データベース:オラクル
・IP:127.0.0.1(localhost)
・ポート番号:1521
・SID:testdb
・ログインID:user01
・ログインパスワード:password
<対象ファンクション>
GET_MULTIPLE(NUMBER a,NUMBER b)
※引数aとbを掛けた値を返すオラクルファンクションとする。
(自作ファンクション)
例)ファンクション「GET_MULTIPLE」を実行する
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 |
import java.sql.DriverManager; import java.sql.Connection; import java.sql.CallableStatement; public class DBFunctionExecSample { public static void main(String[] args) throws Exception{ //変数定義 Connection conn = null; CallableStatement cs = null; //DB接続情報を設定する String path = "jdbc:oracle:thin:@127.0.0.1:1521:testdb"; //接続パス String id = "user01"; //ログインID String pw = "password"; //ログインパスワード //ファンクションを定義する String sql = "{?=call GET_MULTIPLE(?, ?)}"; try { //JDBCドライバをロードする Class.forName("oracle.jdbc.driver.OracleDriver"); //DBへのコネクションを作成する conn = DriverManager.getConnection(path, id, pw); //実行するfunctionを指定してパラメータをセットする cs = conn.prepareCall(sql); cs.registerOutParameter(1, java.sql.Types.INTEGER); //戻り値受取用 cs.setInt(2, 3); cs.setInt(3, 4); //functionを実行する cs.executeUpdate(); //戻り値を表示する System.out.println(cs.getInt(1)); } catch (Exception ex) { //例外発生時の処理 ex.printStackTrace(); //エラー内容をコンソールに出力する } finally { //クローズ処理 if (cs != null) cs.close(); if (conn != null) conn.close(); } } } |
- (結果)
- C:\>java -cp ./;ojdbc8.jar DBFunctionExecSample 12
事前にオラクルのJDBCドライバを用意しておく必要があります。
(ここの例では「ojdbc8.jar」)
関連項目
ソース中で使用しているAPIクラスの詳細については、以下記事をご覧ください。