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

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

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

  1. コール可能文オブジェクトを作成します。
    1. コール可能文オブジェクトを宣言します。次に例を示します。
      private CallableStatement checkIn;
    2. コール可能文オブジェクトを、ストアド・プロシージャのSQLのCALL文に接続するためのprepareCallをコールして初期化します。次に例を示します。
      checkIn = connection.prepareCall(quot;{call NPL.CHECKIN(?, ?, ?)}"); 

      ストアド・プロシージャのパラメータ数は、SQLコールの数値プレースホルダで表されることに注意してください。

    3. コール可能文オブジェクトの出力パラメータを登録します。出力パラメータを位置により識別し、その型を宣言して、それぞれのパラメータに対してregisterOutParameterをコールします。たとえば、2番目のパラメータがSQLのINTEGER(Javaのintに割当て)で、3番目のパラメータがSQLのVARCHAR(JavaのStringに割当て)の場合、次のようになります。
      newCustomer.registerOutParameter(2, Types.INTEGER); 
      newCustomer.registerOutParameter(3, Types.VARCHAR);
  2. コール可能文オブジェクトを実行します。
    1. 入力パラメータを位置により識別し、値を割り当てて、setメソッドをコールすることにより、コール可能文オブジェクトの入力パラメータを指定します。たとえば、最初のパラメータがintの入力パラメータの場合、次のようになります。
      checkIn.setInt(1, bookID);
    2. コール可能文オブジェクトを実行します。次に例を示します。
      checkIn.execute(); 
    3. コール可能文オブジェクトの出力パラメータを抽出します。位置により出力パラメータを識別し、それぞれのパラメータに対してgetメソッドをコールします。getメソッドにより、対応するJava型の値が返されます。次に例を示します。
      int daysLate = checkIn.getInt(2); 
      String title = checkIn.getString(3);

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