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
Lepaskan: 2025-01-02 16:59:40
asal
428 orang telah melayarinya

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();
    Salin selepas log masuk
  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);
    Salin selepas log masuk
  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");
    Salin selepas log masuk
  4. Lumpuhkan Penimbalan Output Pelayan: Selepas mendapatkan semula output, nyahdayakan penimbalan untuk mengelakkan kemungkinan limpahan penimbal:

    dbms_output.disable();
    Salin selepas log masuk
  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();
     }
    }
    Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan