首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Vertx和jdbc获取Oracle存储过程ref_cursor的结果

用Vertx和jdbc获取Oracle存储过程ref_cursor的结果
EN

Stack Overflow用户
提问于 2016-09-08 23:49:05
回答 1查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
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())                 
             }
            });

然后我得到了错误:

代码语言:javascript
复制
 java.sql.SQLException: Type de colonne non valide: 2012
EN

回答 1

Stack Overflow用户

发布于 2016-09-09 21:15:04

游标无法转换为JSON,因此Vert.x JDBC客户端不支持它们。但是,您的驱动程序似乎也无法识别REF_CURSOR类型。我想它是在JDK8中添加的,可能你的驱动程序是为以前的版本编译的?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39395341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档