首頁 >資料庫 >mysql教程 >如何在不建立資料庫物件的情況下在 JDBC 中取得 Oracle 的 DBMS_OUTPUT.GET_LINES?

如何在不建立資料庫物件的情況下在 JDBC 中取得 Oracle 的 DBMS_OUTPUT.GET_LINES?

DDD
DDD原創
2024-12-31 18:38:10683瀏覽

How to Fetch Oracle's DBMS_OUTPUT.GET_LINES in JDBC Without Creating Database Objects?

在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 庫,提供了Java一種自動取得輸出的便捷方法來自伺服器執行。透過在Settings物件中設定withFetchServerOutputSize(),jOOQ將在查詢執行時檢索伺服器輸出。

建議:DBMS_OUTPUT.GET_LINES優於DBMS_OUTPUT.GET_LINE

而DBMS_OUTPUT.GET_LINE一次傳回單行,強烈建議使用改為 DBMS_OUTTUT.LINE一次傳回單行。基準測試表明,從 JDBC 呼叫 DBMS_OUTPUT.GET_LINES 的速度明顯更快。

以上是如何在不建立資料庫物件的情況下在 JDBC 中取得 Oracle 的 DBMS_OUTPUT.GET_LINES?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn