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

Bagaimana untuk Mendapatkan DBMS_OUTPUT Oracle Menggunakan JDBC?

Linda Hamilton
Lepaskan: 2025-01-04 04:35:39
asal
920 orang telah melayarinya

How to Retrieve Oracle's DBMS_OUTPUT Using JDBC?

Mengambil DBMS_OUTPUT.get_lines Menggunakan JDBC

Apabila menggunakan dbms_output.get_lines Oracle dalam aplikasi Java, JDBC menyediakan tanpa cara untuk mendapatkan output mencipta objek pangkalan data tambahan. Pendekatan ini melibatkan satu siri langkah:

  1. Dayakan Penimbalan Output Pelayan: Gunakan dbms_output.enable() untuk mendayakan penimbalan output pelayan.
  2. Jana Output: Laksanakan sebarang prosedur tersimpan atau skrip yang menghasilkan output dan sepatutnya ditangkap.
  3. Ambil Output menggunakan DBMS_OUTPUT.get_lines: Gunakan antara muka CallableStatement untuk melaksanakan prosedur yang memanggil dbms_output.get_lines dan mendaftarkan objek Array sebagai parameter output.
  4. Lumpuhkan Penimbalan Output Pelayan: Ajak dbms_output.disable() untuk mengelakkan limpahan penimbal.

Berikut ialah coretan kod sampel yang menggambarkan proses ini:

try (CallableStatement call = c.prepareCall(
    "declare "
  + "  num integer := 1000;" // Adapt this as needed
  + "begin "
  + "  dbms_output.enable();"
  + "  dbms_output.put_line('abc');"
  + "  dbms_output.put_line('hello');"
  + "  dbms_output.put_line('so cool');"

  // This captures the output up until now through a PL/SQL TABLE type.
  // Oracle 12c+ uses a SQL cursor, while 11g requires an auxiliary SQL TABLE
  + "  dbms_output.get_lines(?, num);"

  // Disable buffering
  + "  dbms_output.disable();"
  + "end;"
)) {
    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

Menggunakan jOOQ

Jika menggunakan perpustakaan jOOQ, anda boleh mendapatkan semula output pelayan secara automatik untuk pertanyaan dengan mendayakan ia dalam objek Tetapan:

DSLContext ctx = DSL.using(c, 
    new Settings().withFetchServerOutputSize(10));
Salin selepas log masuk

Output pelayan akan tersedia dalam ExecuteContext::serverOutput selepas pelaksanaan pertanyaan.

Awas terhadap DBMS_OUTPUT.GET_LINE

Semasa DBMS_OUTPUT.GET_LINE mendapatkan semula baris secara individu, penanda aras telah menunjukkan kelembapan yang ketara berbanding dengan menggunakan DBMS_OUTPUT.GET_LINES, walaupun dalam PL/SQL. Oleh itu, pendekatan pukal menggunakan DBMS_OUTPUT.GET_LINES disyorkan untuk kecekapan.

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

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