我正在尝试使用vertx3读取返回ref_cursor的Oracle存储过程。如果我编辑它以返回ref_cursor并使用JDBCType.CLOB,但由于某些原因,我必须使用clob,那么同样的过程也是有效的。有人能帮帮我吗?
JDBCClient client = JDBCClient.createShared(vertx, new JsonObject()
.put("url", "jdbc:oracle:thin:@localhost:8787:TEST")
.put("driver_class", "oracle.jdbc.OracleDriver")
.put("user", "user")
.put("password", "****"));
client.getConnection( connection -> {
if (connection.succeeded()) {
SQLConnection con = connection.result();
JsonObject params = new JsonObject()
.put("query", "{ call ? := package.procedure(?) }")
.put("paramsIn", new JsonArray().addNull().add(89))
.put("paramsOut", new JsonArray().add(JDBCType.REF_CURSOR));
con.callWithParams(params.getString("query"), params.getJsonArray("paramsIn"), params.getJsonArray("paramsOut"), query -> {
if(query.succeeded()){
ResultSet rs = query.result();
System.out.println(rs.toJson().toString())
}else{
System.out.println(req.body() + query.cause().toString());
}
});
} else { System.out.println(connection.cause().toString())
}
});然后我得到了错误:
java.sql.SQLException: Type de colonne non valide: 2012发布于 2016-09-09 21:15:04
游标无法转换为JSON,因此Vert.x JDBC客户端不支持它们。但是,您的驱动程序似乎也无法识别REF_CURSOR类型。我想它是在JDK8中添加的,可能你的驱动程序是为以前的版本编译的?
https://stackoverflow.com/questions/39395341
复制相似问题