首頁 > 資料庫 > mysql教程 > 如何使用 JDBC 檢索 Oracle 的 DBMS_OUTPUT?

如何使用 JDBC 檢索 Oracle 的 DBMS_OUTPUT?

Linda Hamilton
發布: 2025-01-04 04:35:39
原創
869 人瀏覽過

How to Retrieve Oracle's DBMS_OUTPUT Using JDBC?

使用JDBC 檢索DBMS_OUTPUT.get_lines

在Java 應用程式中使用Oracle 的dbms_output.get_lines 時,JJM的方法,而無需建立附加資料庫物件。此方法涉及一系列步驟:

  1. 啟用伺服器輸出緩衝:使用 dbms_output.enable() 啟用伺服器輸出緩衝。
  2. 產生輸出: 執行任何產生輸出且應該是的預存程序或腳本
  3. 使用DBMS_OUTPUT.get_lines 取得輸出: 使用CallableStatement 介面執行呼叫dbms_output.get_lines 的過程,並將Array 物件註冊為輸出參數。
  4. 停用伺服器輸出緩衝:呼叫dbms_output.disable() 以防止緩衝區溢位。

以下是說明此過程的範例程式碼片段:

try (CallableStatement call = c.prepareCall(
    "declare "
  + "  num integer := 1000;" // Adapt this as needed
  + "begin "
  + "  dbms_output.enable();"
  + "  dbms_output.put_line('abc');"
  + "  dbms_output.put_line('hello');"
  + "  dbms_output.put_line('so cool');"

  // This captures the output up until now through a PL/SQL TABLE type.
  // Oracle 12c+ uses a SQL cursor, while 11g requires an auxiliary SQL TABLE
  + "  dbms_output.get_lines(?, num);"

  // Disable buffering
  + "  dbms_output.disable();"
  + "end;"
)) {
    call.registerOutParameter(1, 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();
    }
}
登入後複製

使用 jOOQ

如果使用 jOOQ庫,您可以透過在「設定」中啟用它來自動檢索伺服器輸出以進行查詢object:

DSLContext ctx = DSL.using(c, 
    new Settings().withFetchServerOutputSize(10));
登入後複製

查詢執行後,伺服器輸出將在 ExecuteContext::serverOutput 中可用。

注意DBMS_OUTPUT.GET_LINE

雖然DBMS_OUTPUT.GET_LINE 單獨檢索行,但與使用DBMS_OUTPUT.GET_LINE 相比,基準測試顯示速度減慢速度減慢. ,即使在PL/SQL 中也是如此。因此,為了提高效率,建議使用 DBMS_OUTPUT.GET_LINES 的批次方法。

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

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