Javaちょこっとリファレンス
HOME > FUNCTION実行サンプル

FUNCTION実行サンプル

JDBCを使用してデータベースのFUNCTION(ファンクション)を実行するサンプルです。
以下のサンプルでは、Oracleデータベースを対象としています。

サンプルコード

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

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

<対象ファンクション>
 GET_MULTIPLE(NUMBER a,NUMBER b)
 ※引数aとbを掛けた値を返すオラクルファンクションとする。
  (自作ファンクション)

オラクルファンクションを実行するサンプル
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 ./;ojdbc14.jar DBFunctionExecSample 12

事前にオラクルの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を表す

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

このエントリーをはてなブックマークに追加

データベースカテゴリ

HOMEへ戻る TOPへ戻る