在 JDBC 中获取 DBMS_OUTPUT.GET_LINES 而不创建数据库对象
在 Oracle 中,DBMS_OUTPUT.GET_LINES 提供了一种从存储过程或存储过程检索输出的机制其他数据库操作。虽然可以在数据库中创建其他对象来促进此过程,但最好避免这种开销。本文探讨了如何使用 JDBC 在 Java 中获取 DBMS_OUTPUT.GET_LINES 输出,而无需借助外部数据库实体。
启用输出缓冲
第一步是启用输出缓冲使用 DBMS_OUTPUT.ENABLE()。这允许在执行数据库操作时捕获服务器输出。
捕获输出
要捕获输出,请使用 DBMS_OUTPUT.GET_LINES()。此过程将指定数量的输出行检索到 SQL 游标中。将输出参数注册为“DBMSOUTPUT_LINESARRAY”类型的数组以接收结果至关重要。
检索输出
DBMSOUTPUT_LINESARRAY 包含表示输出的对象数组线。为了获得实际的输出,使用 JDBC 的 getArray() 方法检索数组。
示例代码
try (CallableStatement call = c.prepareCall( //这段代码用于设置enable output buffering,在DBMS_OUTPUT.PUT_LINE()与DBMS_OUTPUT.GET_LINES()之间执行 "declare num integer := 1000; begin dbms_output.enable(); ..." )) { // ... remaining code to capture and print output }
jOOQ 集成
jOOQ,一个用于处理 SQL 的 Java 库,提供了一种自动获取输出的便捷方法来自服务器执行。通过在Settings对象中设置withFetchServerOutputSize(),jOOQ将在查询执行时检索服务器输出。
建议:DBMS_OUTPUT.GET_LINES优于DBMS_OUTPUT.GET_LINE
而DBMS_OUTPUT.GET_LINE一次返回单行,强烈建议使用改为 DBMS_OUTPUT.GET_LINES。基准测试表明,从 JDBC 调用 DBMS_OUTPUT.GET_LINES 的速度明显更快。
以上是如何在不创建数据库对象的情况下在 JDBC 中获取 Oracle 的 DBMS_OUTPUT.GET_LINES?的详细内容。更多信息请关注PHP中文网其他相关文章!