Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengembalikan Berbilang Set Keputusan daripada Prosedur Tersimpan Oracle PL/SQL?

Bagaimana untuk Mengembalikan Berbilang Set Keputusan daripada Prosedur Tersimpan Oracle PL/SQL?

Mary-Kate Olsen
Lepaskan: 2024-12-29 04:40:09
asal
165 orang telah melayarinya

How to Return Multiple Result Sets from an Oracle PL/SQL Stored Procedure?

Memulangkan Berbilang Set Keputusan dengan Prosedur Tersimpan Oracle PL/SQL

Soalan:

Bagaimana kita boleh membuat prosedur tersimpan yang mendapatkan semula pelbagai set data berdasarkan hujah yang diluluskan dan seterusnya memanggilnya dari biasa SQL?

Jawapan:

Untuk mengembalikan berbilang set hasil daripada prosedur tersimpan Oracle PL/SQL, kami boleh menggunakan pendekatan berikut:

  1. Buat Jenis Objek dan Jadual:

    Pertama, kami menentukan jenis objek dan jadual untuk mewakili struktur data set hasil kami. Dalam contoh ini, kami mencipta jenis objek emp_obj dengan dua atribut: empno (nombor) dan ename (varchar2). Kami kemudiannya mencipta jenis jadual emp_tab sebagai koleksi objek emp_obj.

  2. Bina Prosedur Tersimpan:

    Kami mentakrifkan fungsi (all_emps in kes ini) yang mengembalikan koleksi emp_tab. Di dalam fungsi:

    • Mulakan pembolehubah emp_tab kosong.
    • Lakukan gelung untuk lelaran melalui baris yang dikehendaki (dalam contoh ini, mendapatkan semula empno dan ename daripada jadual emp).
    • Lanjutkan koleksi emp_tab dan tetapkan nilai setiap baris kepada emp_obj instance.
    • Kembalikan koleksi emp_tab yang terisi.
  3. Panggil Prosedur Tersimpan daripada SQL:

    Untuk memanggil fungsi all_emps daripada SQL, kami menggunakan operator jadual. Ini membolehkan kami menanyakan koleksi yang dikembalikan sebagai jadual biasa.

Contoh:

SQL> create type emp_obj is object (empno number, ename varchar2(10));

SQL> create type emp_tab is table of emp_obj;

SQL> 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;

SQL> select * from table (all_emps);
Salin selepas log masuk

Keputusan:

     EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7902 FORD
      7934 MILLER
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Berbilang Set Keputusan daripada Prosedur Tersimpan Oracle PL/SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan