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!