DBMS_OUTPUT mit JDBC abrufen
Beim Umgang mit Datenbankprozeduren oder -funktionen mit Java und JDBC kann es erforderlich sein, die Ausgabe zu erfassen, ohne zusätzliche zu erstellen Objekte oder das Ändern des Datenbankschemas. Ein Ansatz besteht darin, das DBMS_OUTPUT-Paket von Oracle zu verwenden.
Um die Ausgabe von DBMS_OUTPUT.get_lines abzurufen, kann ein JDBC-Aufruf an eine gespeicherte Prozedur wie die folgende erfolgen, die die notwendigen Schritte zum Aktivieren der Pufferung, Ausgabe von Zeilen und Abrufen enthält die Zeilen und das Deaktivieren der Pufferung:
declare num integer := 1000; begin dbms_output.enable(); dbms_output.put_line('abc'); dbms_output.put_line('hello'); dbms_output.put_line('so cool'); dbms_output.get_lines(?, num); dbms_output.disable(); end;
Im JDBC-Code kann diese Prozedur mit a aufgerufen werden CallableStatement und die getArray-Methode zum Abrufen der Ausgabe als Array:
CallableStatement call = c.prepareCall(procedureQuery); call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY"); call.execute(); Array array = call.getArray(1); System.out.println(Arrays.asList((Object[]) array.getArray()));
Ein weiterer Vorteil der Verwendung von DBMS_OUTPUT.get_lines ist die Möglichkeit zur Massenübertragung, wodurch der Overhead einzelner DBMS_OUTPUT.get_line-Aufrufe erheblich reduziert wird. Benchmarking hat gezeigt, dass der Massenansatz bis zu 30-mal schneller sein kann als der Einzelzeilenansatz, wenn er über JDBC ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWie kann ich Oracles DBMS_OUTPUT mithilfe von JDBC effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!