使用JDBC 從Oracle 的DBMS_OUTPUT.GET_LINES 檢索輸出
JDBC 提供了一種訪問Oracle 的db_output.方法,而無需建立資料庫中的其他物件。以下是實現此目的的方法:
啟用伺服器輸出緩衝:在存取輸出之前,在目前連線上啟用緩衝以擷取任何伺服器輸出:
dbms_output.enable();
將輸出儲存在PL/SQL中表: 若要擷取伺服器輸出,請在PL/SQL 中建立一個表格來儲存輸出:
create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
呼叫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");
dbms_output.disable();
存取輸出: 輸出在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(); } }
以上是如何使用 JDBC 從 Oracle 檢索 DBMS_OUTPUT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!