2016-09-08 9 views
0

vertx3を使用してref_cursorを返すOracleストアドプロシージャを読み込もうとしています。私がそれを編集してclobを返し、JDBCType.CLOBを使用するのであれば、同じ手順が有効ですが、なんらかの理由でref_cursorを使用する必要があります。誰か助けてくれますか?Vertxとjdbcを使用してOracleストアドプロシージャ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())     
      } 
      }); 

と私はエラーを取得:彼らはVert.x JDBCクライアントによってサポートされていないので、

java.sql.SQLException: Type de colonne non valide: 2012 

答えて

1

カーソルをJSONに変換することはできません。しかし、ドライバがREF_CURSORタイプを認識していないようです。私はそれがJDK8で追加されたと思うし、おそらくあなたのドライバは以前のバージョンのためにコンパイルされましたか?

関連する問題