Extrahieren von DBMS_OUTPUT-Zeilen mit JDBC
Die Prozedur dbms_output.get_lines ermöglicht den Abruf der Ausgabe von Oracle-Prozeduren, die in einer Java-Anwendung mit JDBC ausgeführt werden. Um dies zu erreichen, ohne Datenbankobjekte zu erstellen, beachten Sie die folgenden Schritte:
Codebeispiel:
try (CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" // Adjust value as needed + "begin \n" + " dbms_output.enable();\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 = call.getArray(1); System.out.println(Arrays.asList((Object[]) array.getArray())); }
Ausgabe:
[abc, hello, so cool, null]
Denken Sie daran, dass aktiviert und Das Deaktivieren des Ausgabepuffers wirkt sich auf die gesamte Verbindung aus. Daher ist es möglich, die Ausgabe über mehrere JDBC-Anweisungen hinweg zu erfassen.
Hinweis: Dieser Ansatz ruft standardmäßig maximal 1000 Zeilen ab. Erwägen Sie eine Schleife in PL/SQL oder das Abfragen der Datenbank nach zusätzlichen Zeilen.
Mit jOOQ:
jOOQ-Benutzer können die Serverausgabe automatisch abrufen, indem sie den FetchServerOutputListener aktivieren:
DSLContext ctx = DSL.using(c, new Settings().withFetchServerOutputSize(10));
Diese Aktion protokolliert die Ausgabe im FetchServerOutputListener und erfasst die Serverausgabe in ExecuteContext::serverOutput.
Das obige ist der detaillierte Inhalt vonWie kann ich DBMS_OUTPUT-Zeilen aus Oracle-Prozeduren mithilfe von JDBC abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!