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

Wie kann ich DBMS_OUTPUT mithilfe von JDBC von Oracle abrufen?

Susan Sarandon
Susan SarandonOriginal
2025-01-02 16:59:40432Durchsuche

How to Retrieve DBMS_OUTPUT from Oracle Using JDBC?

Abrufen der Ausgabe von Oracles DBMS_OUTPUT.GET_LINES mit JDBC

JDBC bietet eine Möglichkeit, auf die von der Oracle-Prozedur dbms_output.get_lines generierten Ausgaben zuzugreifen, ohne etwas zu erstellen zusätzliche Objekte in der Datenbank. So erreichen Sie dies:

  1. Aktivieren Sie die Pufferung der Serverausgabe: Bevor Sie auf die Ausgabe zugreifen, aktivieren Sie die Pufferung auf der aktuellen Verbindung, um jegliche Serverausgabe zu erfassen:

    dbms_output.enable();
  2. Ausgabe in PL/SQL-Tabelle speichern: Um den Server zu erfassen Ausgabe, erstellen Sie eine Tabelle in PL/SQL, um die Ausgabe zu speichern:

    create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
  3. Rufen Sie DBMS_OUTPUT.GET_LINES auf: Verwenden Sie ein CallableStatement, um dbms_output.get_lines aufzurufen und zu übergeben in der PL/SQL-Tabelle als Out Parameter:

    CallableStatement call = c.prepareCall(
     "declare \n"
      + "  num integer := 1000;\n" // Adjust this value as needed
      + "begin \n"
    
      + "  dbms_output.get_lines(?, num);\n"
    
      + "  dbms_output.disable();\n"
      + "end;\n"
    );
    call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
  4. Server-Ausgabepufferung deaktivieren: Deaktivieren Sie nach dem Abrufen der Ausgabe die Pufferung, um mögliche Pufferüberläufe zu verhindern:

    dbms_output.disable();
  5. Auf die Ausgabe zugreifen: Die Ausgabe ist im Out-Parameter verfügbar. Sie können die JDBC-API verwenden, um auf die Elemente der Tabelle zuzugreifen.
  6. Beispielcode: Hier ist ein Codeausschnitt, um den Prozess zu demonstrieren:

    try (CallableStatement call = c.prepareCall(
     "declare \n"
      + "  num integer := 1000;\n" 
      + "begin \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 = null;
     try {
         array = call.getArray(1);
         System.out.println(Arrays.asList((Object[]) array.getArray()));
     }
     finally {
         if (array != null)
             array.free();
     }
    }

Beachten Sie, dass dieser Ansatz mit Oracle 12c oder höher funktioniert. In Oracle 11g müssen Sie möglicherweise einen zusätzlichen SQL-TABLE-Typ verwenden.

Das obige ist der detaillierte Inhalt vonWie kann ich DBMS_OUTPUT mithilfe von JDBC von Oracle 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