首頁 > 資料庫 > mysql教程 > 如何使用 JDBC 從 Oracle 程序中檢索 DBMS_OUTPUT 行?

如何使用 JDBC 從 Oracle 程序中檢索 DBMS_OUTPUT 行?

Susan Sarandon
發布: 2025-01-03 00:00:40
原創
673 人瀏覽過

How Can I Retrieve DBMS_OUTPUT Lines from Oracle Procedures Using JDBC?

使用 JDBC 提取 DBMS_OUTPUT 行

dbms_output.get_lines 程序允許使用 JDBC 從 Java 應用程式中檢索輸出。若要在不建立資料庫物件的情況下實現此目的,請考慮以下步驟:

  1. 啟用伺服器輸出緩衝:使用 dbms_output.enable() 啟動伺服器輸出緩衝。
  2. 填滿緩衝區:呼叫 dbms_output.put_line() 來儲存輸出緩衝區內的行。
  3. 擷取緩衝行 JDBC:使用 CallableStatement 執行動態查詢,呼叫 dbms_output.get_lines 並將擷取的行註冊為陣列。
  4. 停用輸出緩衝:執行dbms_output.disable() 以避免緩衝區溢位。

程式碼範例:

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:
DSLContext ctx = DSL.using(c, 
  new Settings().withFetchServerOutputSize(10));
登入後複製

jOOQ 使用者可以透過啟用FetchServerOutputListener 自動取得伺服器輸出: 此作業將輸出在F1Server擷取ExecuteContext::serverOutput.中的伺服器輸出

以上是如何使用 JDBC 從 Oracle 程序中檢索 DBMS_OUTPUT 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板