Heim >Datenbank >MySQL-Tutorial >Wie gebe ich mehrere Ergebnismengen aus einer gespeicherten Oracle PL/SQL-Prozedur zurück?
Mehrere Ergebnismengen mit gespeicherten Oracle PL/SQL-Prozeduren zurückgeben
Frage:
Wie können wir eine gespeicherte Prozedur erstellen? das verschiedene Datensätze basierend auf einem übergebenen Argument abruft und diese anschließend im Klartext aufruft SQL?
Antwort:
Um mehrere Ergebnismengen aus einer gespeicherten Oracle PL/SQL-Prozedur zurückzugeben, können wir den folgenden Ansatz verwenden:
Objekt- und Tabellentypen erstellen:
Zuerst definieren wir Objekt- und Tabellentypen, um die Datenstruktur unseres Ergebnisses darzustellen Sätze. In diesem Beispiel erstellen wir einen emp_obj-Objekttyp mit zwei Attributen: empno (Nummer) und ename (varchar2). Anschließend erstellen wir einen emp_tab-Tabellentyp als Sammlung von emp_obj-Objekten.
Erstellen Sie die gespeicherte Prozedur:
Wir definieren eine Funktion (all_emps in in diesem Fall), der eine emp_tab-Sammlung zurückgibt. Innerhalb der Funktion:
Rufen Sie die gespeicherte Prozedur aus SQL auf:
Aufrufen Für die all_emps-Funktion von SQL verwenden wir den Tabellenoperator. Dadurch können wir die zurückgegebene Sammlung als reguläre Tabelle abfragen.
Beispiel:
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);
Ergebnis:
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
Das obige ist der detaillierte Inhalt vonWie gebe ich mehrere Ergebnismengen aus einer gespeicherten Oracle PL/SQL-Prozedur zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!