使用 JDBC 提取 DBMS_OUTPUT 行
dbms_output.get_lines 过程允许使用 JDBC 从 Java 应用程序中执行的 Oracle 过程中检索输出。要在不创建数据库对象的情况下实现此目的,请考虑以下步骤:
代码示例:
try (CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" // Adjust value as needed + "begin \n" + " dbms_output.enable();\n" + " dbms_output.put_line('abc');\n" + " dbms_output.put_line('hello');\n" + " dbms_output.put_line('so cool');\n" + " dbms_output.get_lines(?, num);\n" + " dbms_output.disable();\n" + "end;\n" )) { call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY"); call.execute(); Array array = call.getArray(1); System.out.println(Arrays.asList((Object[]) array.getArray())); }
输出:
[abc, hello, so cool, null]
请记住,启用和禁用输出缓冲区会影响整个连接。因此,可以跨多个 JDBC 语句捕获输出。
注意: 此方法默认最多检索 1000 行。考虑在 PL/SQL 中循环或轮询数据库以获取其他行。
使用 jOOQ:
jOOQ 用户可以通过启用 FetchServerOutputListener 自动获取服务器输出:
DSLContext ctx = DSL.using(c, new Settings().withFetchServerOutputSize(10));
此操作将在 FetchServerOutputListener 中记录输出并捕获ExecuteContext::serverOutput.
中的服务器输出以上是如何使用 JDBC 从 Oracle 过程中检索 DBMS_OUTPUT 行?的详细内容。更多信息请关注PHP中文网其他相关文章!