
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:
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();
}
}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));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!