gpt4 book ai didi

java - 使用 vertx 的 JDBC Oracle 存储过程 ref_cursor

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:58 26 4
gpt4 key购买 nike

我正在尝试使用 vertx3 读取返回 ref_cursor 的 Oracle 存储过程。如果我编辑它以返回 clob 并使用 JDBCType.CLOB,则相同的过程有效,但由于某种原因我必须使用 ref_cursor。有人可以帮我吗?

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())
}
});

我收到错误:

{ call ? := package.procedure(?) } java.sql.SQLException: Type de colonne non valide: 2012

最佳答案

从 Vert.x 3.4.1 开始,不支持游标。作为解决方法,您可以创建自己的 javax.sql.DataSource 并将其与 Vertx.executeBlocking 一起使用来调用 JDBC java.sql.CallableStatement

对于其余查询,您仍然可以通过 creating a JDBCClient instance from your javax.sql.DataSource 使用 Vert.x API 。这将避免维护两个不同的连接池。

关于java - 使用 vertx 的 JDBC Oracle 存储过程 ref_cursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42985078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com