Abrufen der Ausgabe von Oracles DBMS_OUTPUT.GET_LINES mit JDBC
JDBC bietet eine Möglichkeit, auf die von der Oracle-Prozedur dbms_output.get_lines generierten Ausgaben zuzugreifen, ohne etwas zu erstellen zusätzliche Objekte in der Datenbank. So erreichen Sie dies:
Aktivieren Sie die Pufferung der Serverausgabe: Bevor Sie auf die Ausgabe zugreifen, aktivieren Sie die Pufferung auf der aktuellen Verbindung, um jegliche Serverausgabe zu erfassen:
dbms_output.enable();
Ausgabe in PL/SQL-Tabelle speichern: Um den Server zu erfassen Ausgabe, erstellen Sie eine Tabelle in PL/SQL, um die Ausgabe zu speichern:
create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
Rufen Sie DBMS_OUTPUT.GET_LINES auf: Verwenden Sie ein CallableStatement, um dbms_output.get_lines aufzurufen und zu übergeben in der PL/SQL-Tabelle als Out Parameter:
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");
Server-Ausgabepufferung deaktivieren: Deaktivieren Sie nach dem Abrufen der Ausgabe die Pufferung, um mögliche Pufferüberläufe zu verhindern:
dbms_output.disable();
Beispielcode: Hier ist ein Codeausschnitt, um den Prozess zu demonstrieren:
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(); } }
Beachten Sie, dass dieser Ansatz mit Oracle 12c oder höher funktioniert. In Oracle 11g müssen Sie möglicherweise einen zusätzlichen SQL-TABLE-Typ verwenden.
Das obige ist der detaillierte Inhalt vonWie kann ich DBMS_OUTPUT mithilfe von JDBC von Oracle abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!