在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中文網其他相關文章!