Heim >Datenbank >MySQL-Tutorial >Wie rufe ich Oracles DBMS_OUTPUT.GET_LINES in JDBC ab, ohne Datenbankobjekte zu erstellen?

Wie rufe ich Oracles DBMS_OUTPUT.GET_LINES in JDBC ab, ohne Datenbankobjekte zu erstellen?

DDD
DDDOriginal
2024-12-31 18:38:10702Durchsuche

How to Fetch Oracle's DBMS_OUTPUT.GET_LINES in JDBC Without Creating Database Objects?

DBMS_OUTPUT.GET_LINES in JDBC abrufen, ohne Datenbankobjekte zu erstellen

In Oracle bietet DBMS_OUTPUT.GET_LINES einen Mechanismus zum Abrufen von Ausgaben aus gespeicherten Prozeduren oder andere Datenbankoperationen. Obwohl es möglich ist, zusätzliche Objekte in der Datenbank zu erstellen, um diesen Prozess zu erleichtern, kann es wünschenswert sein, diesen Mehraufwand zu vermeiden. In diesem Artikel wird untersucht, wie Sie mithilfe von JDBC eine DBMS_OUTPUT.GET_LINES-Ausgabe in Java erhalten, ohne auf externe Datenbankentitäten zurückgreifen zu müssen.

Ausgabepufferung aktivieren

Der erste Schritt besteht darin, die Ausgabepufferung zu aktivieren mit DBMS_OUTPUT.ENABLE(). Dies ermöglicht die Erfassung der Serverausgabe, während Datenbankoperationen ausgeführt werden.

Ausgabe erfassen

Um die Ausgabe zu erfassen, wird DBMS_OUTPUT.GET_LINES() verwendet. Diese Prozedur ruft eine angegebene Anzahl von Ausgabezeilen in einen SQL-Cursor ab. Es ist wichtig, den Ausgabeparameter als Array vom Typ „DBMSOUTPUT_LINESARRAY“ zu registrieren, um die Ergebnisse zu erhalten.

Ausgabe abrufen

DBMSOUTPUT_LINESARRAY enthält ein Array von Objekten, die die Ausgabe darstellen Linien. Um die eigentliche Ausgabe zu erhalten, wird das Array mit der getArray()-Methode von JDBC abgerufen.

Beispielcode

try (CallableStatement call = c.prepareCall(
    //这段代码用于设置enable output buffering,在DBMS_OUTPUT.PUT_LINE()与DBMS_OUTPUT.GET_LINES()之间执行
    "declare num integer := 1000; begin dbms_output.enable(); ..."
)) {
    // ... remaining code to capture and print output
}

jOOQ-Integration

jOOQ, eine Java-Bibliothek für die Arbeit mit SQL, bietet eine praktische Möglichkeit, Ausgaben von Serverausführungen automatisch abzurufen. Durch Festlegen von withFetchServerOutputSize() im Settings-Objekt ruft jOOQ die Serverausgabe bei der Abfrageausführung ab.

Empfehlung: DBMS_OUTPUT.GET_LINES über DBMS_OUTPUT.GET_LINE

Während DBMS_OUTPUT.GET_LINE Gibt einzelne Zeilen auf einmal zurück. Die Verwendung wird dringend empfohlen Stattdessen DBMS_OUTPUT.GET_LINES. Benchmarks haben gezeigt, dass DBMS_OUTPUT.GET_LINES deutlich schneller ist, wenn es von JDBC aufgerufen wird.

Das obige ist der detaillierte Inhalt vonWie rufe ich Oracles DBMS_OUTPUT.GET_LINES in JDBC ab, ohne Datenbankobjekte zu erstellen?. 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