Renvoi de plusieurs ensembles de résultats avec des procédures stockées Oracle PL/SQL
Question :
Comment pouvons-nous créer une procédure stockée qui récupère divers ensembles de données en fonction d'un argument passé et l'appelle ensuite depuis plain SQL ?
Réponse :
Pour renvoyer plusieurs jeux de résultats à partir d'une procédure stockée Oracle PL/SQL, nous pouvons utiliser l'approche suivante :
Créer des types d'objets et de tables :
Tout d'abord, nous définissons les types d'objets et de tables pour représenter la structure de données de notre résultat. ensembles. Dans cet exemple, nous créons un type d'objet emp_obj avec deux attributs : empno (numéro) et ename (varchar2). Nous créons ensuite un type de table emp_tab comme une collection d'objets emp_obj.
Construisons la procédure stockée :
Nous définissons une fonction (all_emps dans ce cas) qui renvoie une collection emp_tab. À l'intérieur de la fonction :
Appeler la procédure stockée depuis SQL :
Pour appeler la fonction all_emps de SQL, nous utilisons l'opérateur table. Cela nous permet d'interroger la collection renvoyée sous forme de table normale.
Exemple :
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);
Résultat :
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
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!