JDBCを使用したJavaストアド・プロシージャのコール

JDBCからコールするJavaストアド・プロシージャは、CallableStatementオブジェクトにカプセル化されている必要があります。

JDBCを使用してJavaストアド・プロシージャをコールするには、次のようにします。

  1. コール可能文オブジェクトを作成します。

    コール可能文オブジェクトを宣言します。たとえば、次のように宣言します。

    private CallableStatement checkIn;

    ストアド・プロシージャのSQLのCALL文への接続に対してprepareCallをコールして、コール可能文オブジェクトを初期化します。たとえば、次のように指定します。

    checkIn = connection.prepareCall(quot;\{call NPL.CHECKIN(?, ?, ?)\}");

    ストアド・プロシージャのパラメータ数は、SQLコールの数値プレースホルダで表されることに注意してください。
  2. コール可能文オブジェクトの出力パラメータを登録します。出力パラメータを位置により識別し、その型を宣言するため、それぞれのパラメータに対してregisterOutParameterをコールします。たとえば、2番目のパラメータがSQL INTEGER(Java intにマップ)で、3番目のパラメータがSQL VARCHAR(Java Stringにマップ)の場合、次のようになります。

    newCustomer.registerOutParameter(2, Types.INTEGER); newCustomer.registerOutParameter(3, Types.VARCHAR);
  3. コール可能文オブジェクトを実行します。

    入力パラメータを位置により識別し、値を割り当てるために、setメソッドをコールすることにより、コール可能文オブジェクトの入力パラメータを指定します。たとえば、最初のパラメータがintの入力パラメータの場合、次のようになります。

    checkIn.setInt(1, bookID);

    コール可能文オブジェクトを実行します。たとえば、次のように指定します。

    checkIn.execute();

    コール可能文オブジェクトの出力パラメータを抽出します。位置により出力パラメータを識別し、それぞれのパラメータに対してgetメソッドをコールします。getメソッドにより、対応するJava型の値が返されます。たとえば、次のようになります。

    int daysLate = checkIn.getInt(2);
    String title = checkIn.getString(3);

Javaストアド・プロシージャのコール