Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengambil DBMS_OUTPUT Oracle Dengan Cekap Menggunakan JDBC?

Bagaimanakah Saya Boleh Mengambil DBMS_OUTPUT Oracle Dengan Cekap Menggunakan JDBC?

Susan Sarandon
Susan Sarandonasal
2024-12-31 09:25:14670semak imbas

How Can I Efficiently Fetch Oracle's DBMS_OUTPUT Using JDBC?

Mengambil DBMS_OUTPUT Menggunakan JDBC

Apabila mengendalikan prosedur atau fungsi pangkalan data menggunakan Java dan JDBC, mungkin terdapat keperluan untuk menangkap output tanpa membuat tambahan objek atau mengubah skema pangkalan data. Satu pendekatan melibatkan penggunaan pakej DBMS_OUTPUT Oracle.

Untuk mendapatkan semula output daripada DBMS_OUTPUT.get_lines, panggilan JDBC boleh dibuat kepada prosedur tersimpan seperti di bawah, yang merangkumi langkah-langkah yang diperlukan untuk mendayakan penimbalan, talian keluaran, mendapatkan semula garisan, dan melumpuhkan penimbalan:

declare
  num integer := 1000;  
begin
  dbms_output.enable();
  dbms_output.put_line('abc');
  dbms_output.put_line('hello');
  dbms_output.put_line('so cool'); 
  dbms_output.get_lines(?, num);
  dbms_output.disable();
end;

Dalam kod JDBC, prosedur ini boleh dipanggil menggunakan CallableStatement dan kaedah getArray untuk mengambil output sebagai tatasusunan:

CallableStatement call = c.prepareCall(procedureQuery);
call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
call.execute();

Array array = call.getArray(1);
System.out.println(Arrays.asList((Object[]) array.getArray()));

Satu lagi kelebihan menggunakan DBMS_OUTPUT .get_lines ialah keupayaan pemindahan pukalnya, dengan ketara mengurangkan overhed DBMS_OUTPUT.get_line individu panggilan. Penandaarasan telah menunjukkan bahawa pendekatan pukal boleh sehingga 30 kali lebih pantas daripada pendekatan baris individu apabila dilaksanakan daripada JDBC.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengambil DBMS_OUTPUT Oracle Dengan Cekap Menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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