Heim >Datenbank >MySQL-Tutorial >Wie kann ich Oracles DBMS_OUTPUT mithilfe von JDBC effizient abrufen?

Wie kann ich Oracles DBMS_OUTPUT mithilfe von JDBC effizient abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-12-31 09:25:14623Durchsuche

How Can I Efficiently Fetch Oracle's DBMS_OUTPUT Using JDBC?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn