Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengambil DBMS_OUTPUT daripada Oracle Menggunakan 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:
Dayakan Penimbalan Output Pelayan: Sebelum mengakses output, dayakan penimbalan pada sambungan semasa untuk menangkap sebarang output pelayan:
dbms_output.enable();
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);
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");
Lumpuhkan Penimbalan Output Pelayan: Selepas mendapatkan semula output, nyahdayakan penimbalan untuk mengelakkan kemungkinan limpahan penimbal:
dbms_output.disable();
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!