Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengembalikan Berbilang Set Keputusan daripada Prosedur Tersimpan Oracle PL/SQL?
Mengembalikan Berbilang Set Hasil daripada Oracle PL/SQL
Pertimbangkan keperluan untuk mencipta prosedur tersimpan yang mengembalikan berbilang set hasil secara dinamik berdasarkan input hujah. Begini cara untuk mencapai ini dalam Oracle PL/SQL:
Membina Prosedur Tersimpan
Untuk mengembalikan berbilang set hasil, mula-mula buat jenis objek yang mewakili data dalam setiap set keputusan. Contohnya, untuk mengembalikan data pekerja:
CREATE TYPE EMP_OBJ IS OBJECT (EMPNO NUMBER, ENAME VARCHAR2(10));
Seterusnya, buat jenis jadual yang menyimpan koleksi objek ini:
CREATE TYPE EMP_TAB IS TABLE OF EMP_OBJ;
Sekarang, buat prosedur tersimpan. Berikut ialah contoh yang memberikan objek kepada tatasusunan dan mengembalikannya:
CREATE OR REPLACE FUNCTION ALL_EMPS RETURN EMP_TAB IS L_EMP_TAB EMP_TAB := EMP_TAB(); N INTEGER := 0; BEGIN FOR R IN (SELECT EMPNO, ENAME FROM EMP) LOOP L_EMP_TAB.EXTEND; N := N + 1; L_EMP_TAB(N) := EMP_OBJ(R.EMPNO, R.ENAME); END LOOP; RETURN L_EMP_TAB; END;
Panggilan daripada SQL Biasa
Setelah prosedur tersimpan dibuat, anda boleh memanggilnya SQL biasa menggunakan pembina TABLE():
SELECT * FROM TABLE (ALL_EMPS);
Pertanyaan ini akan mengembalikan semua pekerja sebagai hasil tunggal jadual.
Contoh
Pertimbangkan prosedur tersimpan berikut:
CREATE OR REPLACE PROCEDURE GET_EMPLOYEES ( DEPT INTEGER, OUT RECORDS OUT SYS_REFCURSOR ) IS ... END;
Anda boleh memanggil prosedur ini dan mengakses rekod yang dikembalikan menggunakan kursor:
DECLARE EMP_CUR SYS_REFCURSOR; BEGIN GET_EMPLOYEES(10, EMP_CUR); LOOP FETCH EMP_CUR INTO EMP_OBJ; EXIT WHEN EMP_CUR%NOTFOUND; ... END LOOP; END;
Dengan menggunakan jenis objek, jenis jadual dan kursor, anda boleh mengembalikan berbilang set hasil daripada Prosedur tersimpan Oracle PL/SQL. Ini memberikan fleksibiliti dan kecekapan apabila bekerja dengan data yang kompleks dalam aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Berbilang Set Keputusan daripada Prosedur Tersimpan Oracle PL/SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!