Mengekstrak DBMS_OUTPUT Lines menggunakan JDBC
Prosedur dbms_output.get_lines membolehkan mendapatkan semula output daripada prosedur Oracle yang dilaksanakan dalam aplikasi Java menggunakan JDBC. Untuk mencapai ini tanpa membuat objek pangkalan data, pertimbangkan langkah berikut:
Contoh Kod:
try (CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" // Adjust value as needed + "begin \n" + " dbms_output.enable();\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 = call.getArray(1); System.out.println(Arrays.asList((Object[]) array.getArray())); }
Output:
[abc, hello, so cool, null]
Ingat bahawa mendayakan dan melumpuhkan penimbal output menjejaskan keseluruhan sambungan. Oleh itu, adalah mungkin untuk menangkap output merentas berbilang pernyataan JDBC.
Nota: Pendekatan ini mendapatkan maksimum 1000 baris secara lalai. Pertimbangkan untuk menggelung dalam PL/SQL atau mengundi pangkalan data untuk baris tambahan.
Menggunakan jOOQ:
Pengguna jOOQ boleh mengambil output pelayan secara automatik dengan mendayakan FetchServerOutputListener:
DSLContext ctx = DSL.using(c, new Settings().withFetchServerOutputSize(10));
Tindakan ini akan log keluaran dalam FetchServerOutputListener dan tangkap output pelayan dalam ExecuteContext::serverOutput.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Talian DBMS_OUTPUT daripada Prosedur Oracle Menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!