2016-09-08 3 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에 추가 된 것 같고 드라이버가 이전 버전 용으로 컴파일 된 것일까 요?

관련 문제