HOME > PROCEDURE実行サンプル

PROCEDURE実行サンプル

JDBCを使用してデータベースのPROCEDURE(プロシージャ)を実行するサンプルです。
以下のサンプルでは、Oracleデータベースを対象としています。

サンプルソースコード

接続するデータベース情報は以下の通りとします。

<DB情報>
 ・データベース:オラクル
 ・IP:127.0.0.1(localhost)
 ・ポート番号:1521
 ・SID:testdb
 ・ログインID:user01
 ・ログインパスワード:password

<対象プロシージャ>
 INSERT_TBL(NUMBER a, CHAR b, VARHCAR2 c)
 ※テーブルに引数a、b、cをINSERTするオラクルプロシージャとする。
  (自作プロシージャ)

オラクルプロシージャを実行するサンプル
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.CallableStatement;

public class DBProcedureExecSample {

    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 INSERT_TBL(?, ?, ?)}";

        try {
            //JDBCドライバをロードする
            Class.forName("oracle.jdbc.driver.OracleDriver");

            //DBへのコネクションを作成する
            conn = DriverManager.getConnection(path, id, pw);
            conn.setAutoCommit(false);  //オートコミットはオフ

            //実行するProcedureを指定してパラメータをセットする
            cs = conn.prepareCall(sql);
            cs.setInt(1, 100);
            cs.setString(2, "A");
            cs.setString(3, "BBB");

            //Procedureを実行する
            cs.executeUpdate();

            //コミットする
            conn.commit();

        } catch (Exception ex) {
            //例外発生時の処理
            conn.rollback();       //ロールバックする
            ex.printStackTrace();  //エラー内容をコンソールに出力する

        } finally {
            //クローズ処理
            if (cs != null) cs.close();
            if (conn != null) conn.close();
        }

    }

}
実行結果
java -cp ./;ojdbc14.jar DBProcedureExecSample プロシージャ実行が完了しました。

事前にオラクルのJDBCドライバを用意しておく必要があります。
(ここの例では「ojdbc14.jar」)

主要メソッド

【java.sql.CallableStatementクラスの主要メソッド】
戻値型メソッド説明
voidsetString(int a, String b)a番目の「?」にbをString型でセットする
voidsetInt(int a, int b)a番目の「?」にbをint型でセットする
voidsetLong(int a, long b)a番目の「?」にbをlong型でセットする
voidsetFloat(int a, float b)a番目の「?」にbをfloat型でセットする
voidsetDouble(int a, double b)a番目の「?」にbをdouble型でセットする
voidsetDate(int a, Date b)a番目の「?」にbをjava.sql.Date型でセットする
voidsetBoolean(int a, boolean b)a番目の「?」にbをboolean型でセットする
intgetInt(int a)a番目の「?」の値をint型で取得する
voidregisterOutParameter(int a, int b)a番目の「?」にOUTパラメータとして、java.sql.Types型を指定する
※下記表参照
longgetLong(int a)a番目の「?」の値をlong型で取得する
floatgetFloat(int a)a番目の「?」の値をfloat型で取得する
doublegetDouble(int a)a番目の「?」の値をdouble型で取得する
booleangetBoolean(int a)a番目の「?」の値をboolean型で取得する
StringgetString(int a)a番目の「?」の値をString型で取得する
DategetDate(int a)a番目の「?」の値をDate型で取得する
voidclearParameters()全てのパラメータをクリアする
intexecuteUpdate()実行する
【java.sql.Types主要定数】
定数説明
Types.CHARCHAR型を表す
Types.INTEGERINTEGER型を表す
Types.FLOATFLOAT型を表す
Types.DOUBLEDOUBLE型を表す
Types.VARCHARVARCHAR型を表す
Types.NCHARNCHAR型を表す
Types.NVARCHARNVARCHAR型を表す
Types.DATEDATE型を表す
Types.TIMESTAMPTIMESTAMP型を表す
Types.ROWIDROWID型を表す
Types.NULLNULLを表す

主要な定数のみ掲載しています。