ストアド プロシージャspSample2について考えてみましょう。このストアド プロシージャは、以下のJDBC API呼び出しによって実行できます。
CallableStatement cstmt = con.prepareCall("CALL spSample2(p1, ?, ?)"); ResultSet rs = cstmt.executeQuery();
第2行(ResultSet rs = ...)については、次の代替呼び出しも使えます。
boolean bool = cstmt.execute();
または
int count = cstmt.executeUpdate();
疑問符は引数を示しており、prepareCall()リクエストのINまたはINOUTパラメータのプレースホルダーの役割を果たします。疑問符のプレースホルダー引数は、CallableStatement.setXXX() JDBC API呼び出しを使ってアプリケーションのローカル変数および定数にバインドしなければなりません。
あるいは、IN引数またはINOUT引数を値式にすることもできます。
INOUT引数とOUT引数は、以下のJDBC API呼び出しを使って登録する必要があります。
CallableStatement.registerOutParameter()
実行後、CallableStatement.getXXX() JDBC API呼び出しを使って、応答からパラメータ値を取り出すことができます。