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

如何使用 JDBC 從 Oracle 檢索 DBMS_OUTPUT?

Susan Sarandon
發布: 2025-01-02 16:59:40
原創
429 人瀏覽過

How to Retrieve DBMS_OUTPUT from Oracle Using JDBC?

使用JDBC 從Oracle 的DBMS_OUTPUT.GET_LINES 檢索輸出

JDBC 提供了一種訪問Oracle 的db_output.方法,而無需建立資料庫中的其他物件。以下是實現此目的的方法:

  1. 啟用伺服器輸出緩衝:在存取輸出之前,在目前連線上啟用緩衝以擷取任何伺服器輸出:

    dbms_output.enable();
    登入後複製
  2. 將輸出儲存在PL/SQL中表: 若要擷取伺服器輸出,請在PL/SQL 中建立一個表格來儲存輸出:

    create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
    登入後複製
  3. 呼叫DBMS_OUTPUT.GET_LINES:

    呼叫DBMS_OUTPUT.GET_LINES:
    CallableStatement call = c.prepareCall(
     "declare \n"
      + "  num integer := 1000;\n" // Adjust this value as needed
      + "begin \n"
    
      + "  dbms_output.get_lines(?, num);\n"
    
      + "  dbms_output.disable();\n"
      + "end;\n"
    );
    call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
    登入後複製
  4. 呼叫DBMS_OUTPUT.GET_LINES:
  5. 使用CallableStatement 呼叫dbms_output.get_lines 並傳入PL/SQL表格作為輸出參數:

    dbms_output.disable();
    登入後複製
  6. 停用伺服器輸出緩衝:
  7. 檢索輸出後,停用緩衝以防止潛在的緩衝區溢位:
  8. 存取輸出: 輸出在out 參數中可用。您可以使用 JDBC API 存取表的元素。

    try (CallableStatement call = c.prepareCall(
     "declare \n"
      + "  num integer := 1000;\n" 
      + "begin \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 = null;
     try {
         array = call.getArray(1);
         System.out.println(Arrays.asList((Object[]) array.getArray()));
     }
     finally {
         if (array != null)
             array.free();
     }
    }
    登入後複製
  9. 範例程式碼:
以下程式碼片段示範了該過程:

請注意,此方法適用於Oracle 12c或更高版本。在Oracle 11g中,您可能需要使用輔助SQL TABLE類型。

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

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