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

Bagaimanakah Saya Boleh Mengembalikan Berbilang Set Keputusan daripada Prosedur Tersimpan Oracle PL/SQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-28 02:27:10852semak imbas

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

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!

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