我使用了代码:
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]
这可能是什么原因,如何解决?
根据这个问题:使用JDBC从dbms_output.get_lines获取输出,我使用了代码:try(Statement s = conn1.createStatement()){try {s.executeUpdate(“ dbms_output开头。...