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
865 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!

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