Rumah >pangkalan data >tutorial mysql >Bagaimanakah Prosedur Tersimpan Oracle PL/SQL Dapat Mengembalikan Berbilang Set Keputusan?

Bagaimanakah Prosedur Tersimpan Oracle PL/SQL Dapat Mengembalikan Berbilang Set Keputusan?

Barbara Streisand
Barbara Streisandasal
2024-12-30 01:56:08977semak imbas

How Can Oracle PL/SQL Stored Procedures Return Multiple Result Sets?

Prosedur Tersimpan dengan Berbilang Set Hasil dalam Oracle PL/SQL

Dalam Oracle PL/SQL, prosedur tersimpan boleh dibuat untuk mengembalikan berbilang hasil set berdasarkan hujah yang berbeza. Ini boleh meningkatkan fleksibiliti pertanyaan dan membolehkan pengambilan data yang cekap. Untuk mencapai matlamat ini, konsep jadual bersarang, juga dikenali sebagai jenis koleksi, dimainkan.

Pertimbangkan senario di mana anda memerlukan prosedur tersimpan untuk mendapatkan semula rekod pekerja secara dinamik berdasarkan kriteria yang dibekalkan pengguna. Begini cara anda boleh mendekatinya:

  1. Tentukan Jenis Jadual Bersarang: Cipta jenis jadual bersarang yang akan menyimpan set hasil objek pekerja. Jenis ini berfungsi sebagai templat untuk menstruktur data yang dikembalikan.
  2. Buat Prosedur Tersimpan: Bina prosedur tersimpan dengan parameter input dan isytiharkan pembolehubah jenis jadual bersarang yang ditentukan.
  3. Isi Jadual Bersarang: Dalam prosedur yang disimpan, ulangi data sumber menggunakan kursor dan tambah pekerja objek kepada pembolehubah jadual bersarang.
  4. Kembalikan Jadual Bersarang: Setelah jadual bersarang diisi, kembalikannya sebagai hasil daripada prosedur yang disimpan.
  5. Invoke daripada Plain SQL: Prosedur tersimpan boleh digunakan daripada SQL biasa hanya dengan memanggil namanya, menghantar argumen jika perlu.

Berikut ialah contoh pelaksanaan:

TYPE emp_obj IS OBJECT (empno NUMBER, ename VARCHAR2(10));
TYPE emp_tab IS TABLE OF emp_obj;

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;

Kini, anda boleh melaksanakan prosedur tersimpan ini dalam SQL biasa:

SELECT * FROM TABLE(all_emps);

Pertanyaan ini akan kembali set hasil yang dijana secara dinamik dengan berbilang baris, di mana setiap baris mewakili objek pekerja.

Atas ialah kandungan terperinci Bagaimanakah Prosedur Tersimpan Oracle PL/SQL Dapat Mengembalikan Berbilang Set Keputusan?. 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