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.x
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 の制限によってバインドされません。タイプ名のテキスト定数の代わりに、データベース固有の型を使用できるようになりました。