Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengambil DBMS_OUTPUT daripada Oracle Menggunakan JDBC?

Bagaimana untuk Mengambil DBMS_OUTPUT daripada Oracle Menggunakan JDBC?

Susan Sarandon
Susan Sarandonasal
2025-01-02 16:59:40406semak imbas

How to Retrieve DBMS_OUTPUT from Oracle Using JDBC?

Mendapatkan Keluaran daripada DBMS_OUTPUT.GET_LINES Oracle Menggunakan JDBC

JDBC menyediakan cara untuk mengakses output yang dihasilkan oleh prosedur dbms_output Oracle tanpa membuat.get_lines objek tambahan dalam pangkalan data. Begini cara untuk mencapainya:

  1. Dayakan Penimbalan Output Pelayan: Sebelum mengakses output, dayakan penimbalan pada sambungan semasa untuk menangkap sebarang output pelayan:

    dbms_output.enable();
  2. Simpan Output dalam PL/SQL Jadual: Untuk menangkap output pelayan, cipta jadual dalam PL/SQL untuk menyimpan output:

    create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
  3. Panggil DBMS_OUTPUT.GET_LINES: Gunakan CallableStatement untuk memanggil dbms_output.get_lines dan menghantar jadual PL/SQL sebagai keluar 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. Lumpuhkan Penimbalan Output Pelayan: Selepas mendapatkan semula output, nyahdayakan penimbalan untuk mengelakkan kemungkinan limpahan penimbal:

    dbms_output.disable();
  5. Akses Output: Output tersedia dalam parameter keluar. Anda boleh menggunakan API JDBC untuk mengakses elemen jadual.
  6. Kod Contoh: Berikut ialah coretan kod untuk menunjukkan proses:

    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();
     }
    }

Perhatikan bahawa pendekatan ini berfungsi dengan Oracle 12c atau lebih baru. Dalam Oracle 11g, anda mungkin perlu menggunakan jenis SQL TABLE tambahan.

Atas ialah kandungan terperinci Bagaimana untuk Mengambil DBMS_OUTPUT daripada Oracle Menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn