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
Freigeben: 2025-01-02 16:59:40
Original
425 Leute haben es durchsucht

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();
    Nach dem Login kopieren
  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);
    Nach dem Login kopieren
  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");
    Nach dem Login kopieren
  4. Server-Ausgabepufferung deaktivieren: Deaktivieren Sie nach dem Abrufen der Ausgabe die Pufferung, um mögliche Pufferüberläufe zu verhindern:

    dbms_output.disable();
    Nach dem Login kopieren
  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();
     }
    }
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage