Rumah >pangkalan data >Oracle >prosedur tersimpan oracle mengembalikan set hasil
Oracle ialah salah satu sistem pengurusan pangkalan data hubungan yang paling terkenal di dunia. Prosedur tersimpan adalah salah satu ciri penting, yang membolehkan kami merangkum satu set pernyataan SQL ke dalam blok kod dan mengembalikan satu atau lebih set hasil. Walau bagaimanapun, mengembalikan set keputusan daripada prosedur tersimpan dalam Oracle bukanlah tugas yang mudah. Dalam artikel ini, kami akan memperkenalkan cara menulis prosedur tersimpan dan mengembalikan set hasil.
1. Pengenalan asas kepada prosedur tersimpan
Prosedur tersimpan ialah objek pangkalan data yang serupa dengan fungsi. Ia ditulis oleh satu set pernyataan SQL, termasuk pemprosesan satu atau lebih parameter input dan pemprosesan hasil yang dikembalikan. Prosedur tersimpan boleh menerima parameter input, melakukan pengiraan, pertanyaan atau operasi tertentu dan mengembalikan parameter output atau set hasil. Prosedur tersimpan boleh digunakan untuk menyelesaikan operasi pangkalan data seperti pertanyaan, kemas kini, padam, masukkan, dll.
Kelebihan prosedur tersimpan ialah fleksibiliti dan kebolehgunaan semula. Prosedur tersimpan boleh menyokong input berparameter, dan pernyataan SQL yang kompleks boleh ditulis menggunakan struktur kawalan logik. Ia juga boleh dipanggil beberapa kali oleh berbilang aplikasi klien dan boleh diakses dan dilaksanakan oleh pengguna dan peranan yang berbeza.
2. Kaedah untuk prosedur tersimpan untuk mengembalikan set hasil
Prosedur tersimpan boleh mengembalikan set hasil tunggal atau berbilang, bergantung pada keperluan prosedur tersimpan. Di sini kami memperkenalkan dua kaedah untuk melaksanakan prosedur tersimpan untuk mengembalikan set hasil.
SYS_REFCURSOR ialah jenis data yang disediakan oleh Oracle untuk merujuk set hasil. Dengan menggunakan SYS_REFCURSOR, prosedur tersimpan boleh mengembalikan set hasil dan aplikasi klien boleh mengakses dan memproses set hasil.
Berikut ialah contoh menggunakan SYS_REFCURSOR untuk mengembalikan set hasil:
CREATE OR REPLACE PROCEDURE sample_proc( p_param_1 IN VARCHAR2, p_param_2 IN OUT NUMBER, p_out_cur OUT SYS_REFCURSOR ) IS BEGIN OPEN p_out_cur FOR SELECT col_1, col_2, col_3 FROM table_name WHERE column_name = p_param_1; p_param_2 := p_param_2 * 10; END;
Dalam prosedur tersimpan ini, p_param_1 dan p_param_2 ialah parameter input dan p_out_cur ialah parameter output. Prosedur tersimpan akan menanyakan data dengan p_param_1 sebagai syarat, dan menyimpan hasil pertanyaan dalam parameter p_out_cur jenis SYS_REFCURSOR.
Cara lain ialah menggunakan kursor. Kursor ialah mekanisme untuk memproses keputusan yang ditetapkan baris demi baris. Apabila prosedur tersimpan menggunakan kursor untuk memulangkan set hasil, ia boleh mengulangi set hasil baris demi baris dan mengembalikan setiap baris data kepada aplikasi klien.
Berikut ialah contoh menggunakan kursor untuk mengembalikan set hasil:
CREATE OR REPLACE PROCEDURE sample_proc( p_param_1 IN VARCHAR2, p_param_2 IN OUT NUMBER ) IS c_cursor SYS_REFCURSOR; v_col_1 table_name.col_1%TYPE; v_col_2 table_name.col_2%TYPE; v_col_3 table_name.col_3%TYPE; BEGIN OPEN c_cursor FOR SELECT col_1, col_2, col_3 FROM table_name WHERE column_name = p_param_1; LOOP FETCH c_cursor INTO v_col_1, v_col_2, v_col_3; EXIT WHEN c_cursor%NOTFOUND; -- 处理逐行返回的数据 END LOOP; p_param_2 := p_param_2 * 10; CLOSE c_cursor; END;
Dalam prosedur tersimpan ini, p_param_1 dan p_param_2 ialah parameter input. Prosedur yang disimpan akan menanyakan data menggunakan p_param_1 sebagai syarat dan menggunakan kursor untuk mengulangi setiap baris data. Untuk setiap baris data, prosedur tersimpan boleh menggunakan pembolehubah untuk menyimpan data lajur set hasil. Prosedur yang disimpan kemudiannya boleh menutup kursor pada penghujung menggunakan pernyataan TUTUP.
3. Kesimpulan
Prosedur tersimpan adalah salah satu fungsi penting dalam Oracle Ia membolehkan kami merangkum satu set pernyataan SQL ke dalam blok kod dan mengembalikan satu atau lebih set hasil. Dalam penggunaan sebenar, anda boleh memilih untuk menggunakan SYS_REFCURSOR atau kursor untuk mengembalikan set hasil seperti yang diperlukan. Mana-mana pendekatan memerlukan menulis beberapa kod tambahan. Oleh itu, sebelum menulis prosedur tersimpan, pastikan anda sudah biasa dengan dokumentasi dan fungsi Oracle yang berkaitan dan boleh menggunakannya dengan betul untuk melengkapkan keperluan anda.
Atas ialah kandungan terperinci prosedur tersimpan oracle mengembalikan set hasil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!