得到???使用JDBC从dbms_output.get_lines输出



根据这个问题:使用JDBC 从dbms_output.get_lines获取输出

我使用了代码:

try (Statement s = conn1.createStatement()) {
try {
s.executeUpdate("begin dbms_output.enable(); end;");
s.executeUpdate("begin dbms_output.put_line('abc'); end;");
s.executeUpdate("begin dbms_output.put_line('hello'); end;");
s.executeUpdate("begin dbms_output.put_line('so cool'); end;");
try (CallableStatement call = conn1.prepareCall(
"declare "
+ "  num integer := 1000;"
+ "begin "
+ "  dbms_output.get_lines(?, num);"
+ "end;"
)) {
call.registerOutParameter(1, java.sql.Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
call.execute();
Array array = null;
try {
array = call.getArray(1);
System.out.println(Arrays.asList((Object[]) array.getArray()));
}
finally {
if (array != null)
array.free();
}
}
}
finally {
s.executeUpdate("begin dbms_output.disable(); end;");
}
}

但结果收到:

[???, ???, ???, null]

当我应该得到:

[abc, hello, so cool, null]

造成这种情况的原因是什么?如何解决?

将orai18n.jar包含到项目库中解决了这个问题。。。

仅将orai18n.jar包含到项目库中就解决了这个问题。此jar具有支持Advance Data Types(Objects(中所有Oracle字符集的配置信息。

最新更新