Heim >Datenbank >MySQL-Tutorial >Wie kann ich mehrere Ergebnismengen aus einer gespeicherten Oracle PL/SQL-Prozedur zurückgeben?
Mehrere Ergebnismengen von Oracle PL/SQL zurückgeben
Berücksichtigen Sie die Notwendigkeit, eine gespeicherte Prozedur zu erstellen, die dynamisch mehrere Ergebnismengen basierend auf der Eingabe zurückgibt Argumente. So erreichen Sie dies in Oracle PL/SQL:
Erstellen der gespeicherten Prozedur
Um mehrere Ergebnismengen zurückzugeben, erstellen Sie zunächst einen Objekttyp, der die Daten in jedem darstellt Ergebnissatz. Um beispielsweise Mitarbeiterdaten zurückzugeben:
CREATE TYPE EMP_OBJ IS OBJECT (EMPNO NUMBER, ENAME VARCHAR2(10));
Als nächstes erstellen Sie einen Tabellentyp, der eine Sammlung dieser Objekte speichert:
CREATE TYPE EMP_TAB IS TABLE OF EMP_OBJ;
Jetzt erstellen Sie die gespeicherte Prozedur. Hier ist ein Beispiel, das Objekte einem Array zuweist und zurückgibt:
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;
Aufruf aus einfachem SQL
Sobald die gespeicherte Prozedur erstellt wurde, können Sie sie aufrufen einfaches SQL mit dem TABLE()-Konstruktor:
SELECT * FROM TABLE (ALL_EMPS);
Diese Abfrage gibt alle Mitarbeiter als ein einziges Ergebnis zurück Tabelle.
Beispiel
Betrachten Sie die folgende gespeicherte Prozedur:
CREATE OR REPLACE PROCEDURE GET_EMPLOYEES ( DEPT INTEGER, OUT RECORDS OUT SYS_REFCURSOR ) IS ... END;
Sie können diese Prozedur aufrufen und mit einem Cursor auf die zurückgegebenen Datensätze zugreifen:
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;
Durch die Verwendung von Objekttypen, Tabellentypen und Cursorn können Sie effektiv mehrere Ergebnismengen aus dem in Oracle PL/SQL gespeicherten Ergebnis zurückgeben Verfahren. Dies sorgt für Flexibilität und Effizienz bei der Arbeit mit komplexen Daten in Ihren Anwendungen.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Ergebnismengen aus einer gespeicherten Oracle PL/SQL-Prozedur zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!