Renvoi de plusieurs jeux d'enregistrements à partir de procédures stockées dans Oracle PL/SQL
Lorsque vous travaillez avec des procédures stockées dans Oracle PL/SQL, renvoi de plusieurs jeux des enregistrements basés sur un argument fourni peut être une exigence courante. Voici comment y parvenir :
Création d'une fonction pour renvoyer un ensemble de résultats
Pour créer une fonction qui renvoie un ensemble de résultats, nous pouvons définir un type personnalisé pour représenter les objets que nous voulons renvoyer, puis déclarer une table de ce type dans la fonction. Ce tableau sera renseigné dynamiquement en fonction de l'argument passé à la fonction.
Considérez l'exemple suivant :
CREATE TYPE emp_obj AS OBJECT (empno NUMBER, ename VARCHAR2(10)); CREATE TYPE emp_tab AS TABLE OF emp_obj; 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;
Interrogation de l'ensemble de résultats
Une fois la fonction créée, vous pouvez interroger le jeu de résultats renvoyé comme s'il s'agissait d'une table. Par exemple, la requête suivante affichera tous les employés :
SELECT * FROM table (all_emps);
Cela renverra une liste de tous les employés, y compris leurs numéros et noms d'employés.
Appel de la fonction depuis Plain SQL
Pour appeler la fonction depuis du SQL brut, utilisez simplement la syntaxe suivante :
SELECT * FROM all_emps;
Cela exécutera la fonction et renvoie l'ensemble de résultats.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!