
Abrufen von DBMS_OUTPUT.get_lines mit JDBC
Bei Verwendung von Oracles dbms_output.get_lines in einer Java-Anwendung bietet JDBC eine Möglichkeit, die Ausgabe ohne zu erhalten Erstellen zusätzlicher Datenbankobjekte. Dieser Ansatz umfasst eine Reihe von Schritten:
Hier ist ein Beispielcode-Snippet, das diesen Prozess veranschaulicht:
try (CallableStatement call = c.prepareCall(
"declare "
+ " num integer := 1000;" // Adapt this as needed
+ "begin "
+ " dbms_output.enable();"
+ " dbms_output.put_line('abc');"
+ " dbms_output.put_line('hello');"
+ " dbms_output.put_line('so cool');"
// This captures the output up until now through a PL/SQL TABLE type.
// Oracle 12c+ uses a SQL cursor, while 11g requires an auxiliary SQL TABLE
+ " dbms_output.get_lines(?, num);"
// Disable buffering
+ " dbms_output.disable();"
+ "end;"
)) {
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();
}
}Verwendung von jOOQ
Wenn Sie die jOOQ-Bibliothek verwenden, können Sie die Serverausgabe für Abfragen automatisch abrufen, indem Sie sie in den Einstellungen aktivieren Objekt:
DSLContext ctx = DSL.using(c,
new Settings().withFetchServerOutputSize(10));Die Serverausgabe ist nach der Abfrageausführung im ExecuteContext::serverOutput verfügbar.
Vorsicht vor DBMS_OUTPUT.GET_LINE
Während DBMS_OUTPUT.GET_LINE Zeilen einzeln abruft, haben Benchmarks im Vergleich zur Verwendung eine deutliche Verlangsamung gezeigt DBMS_OUTPUT.GET_LINES, auch in PL/SQL. Aus Effizienzgründen wird daher der Massenansatz unter Verwendung von DBMS_OUTPUT.GET_LINES empfohlen.
Das obige ist der detaillierte Inhalt vonWie rufe ich Oracles DBMS_OUTPUT mit JDBC ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Die Seitenzahl von Word beginnt auf der dritten Seite als 1 Tutorial
Drei häufig verwendete Kodierungsmethoden
Verwendung der Accept-Funktion
Welche Java-Workflow-Engines gibt es?
So binden Sie Daten in einer Dropdown-Liste
Was ist die C-Programmiersoftware?
Was ist CONNECTION_REFUSED
So lösen Sie 400 fehlerhafte Anfragen