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
Lepaskan: 2024-12-28 02:27:10
asal
891 orang telah melayarinya

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));
Salin selepas log masuk

Seterusnya, buat jenis jadual yang menyimpan koleksi objek ini:

CREATE TYPE EMP_TAB IS TABLE OF EMP_OBJ;
Salin selepas log masuk

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;
Salin selepas log masuk

Panggilan daripada SQL Biasa

Setelah prosedur tersimpan dibuat, anda boleh memanggilnya SQL biasa menggunakan pembina TABLE():

SELECT * FROM TABLE (ALL_EMPS);
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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