8.2.4. ストアドプロシージャーのサポート
ストアドプロシージャーは JDBC クライアントでサポートされます。
以下の例は、Eclipse Vert.x 3.x で IN
引数を渡す方法を示しています。
// 3.x connection.callWithParams( "{ call new_customer(?, ?) }", new JsonArray().add("John").add("Doe"), null, res -> { if (res.succeeded()) { // Success! } else { // Failed! } });
以下の例は、Eclipse Vert.x 4 で IN
引数を渡す方法を示しています。
// 4.0 client .preparedQuery("{call new_customer(?, ?)}") .execute(Tuple.of("Paulo", "Lopes")) .onSuccess(rows -> { ... });
Eclipse Vert.x 3.x では、IN
引数および OUT
引数を組み合わせるサポートは、利用可能なタイプにより大幅に制限されていました。Eclipse Vert.x 4 では、プールは安全なタイプであり、IN
と OUT
の引数の組み合わせを処理できます。アプリケーションで INOUT
パラメーターを使用することもできます。
以下の例は、Eclipse Vert.x 3.x での引数の処理を示しています。
// 3.x connection.callWithParams( "{ call customer_lastname(?, ?) }", new JsonArray().add("John"), new JsonArray().addNull().add("VARCHAR"), res -> { if (res.succeeded()) { ResultSet result = res.result(); } else { // Failed! } });
以下の例は、Eclipse Vert.x 4 での引数の処理を示しています。
// 4.x client .preparedQuery("{call customer_lastname(?, ?)}") .execute(Tuple.of("John", SqlOutParam.OUT(JDBCType.VARCHAR))) .onSuccess(rows -> { ... });
JDBC クライアントで、データ型が更新されました。
-
OUT
型の引数に、戻り値のタイプを指定できます。この例では、OUT
引数は、JDBC 定数であるVARCHAR
型として指定されています。 - タイプは JSON の制限によってバインドされません。タイプ名のテキスト定数の代わりに、データベース固有の型を使用できるようになりました。