Maison >base de données >tutoriel mysql >Comment puis-je récupérer plusieurs jeux de résultats à partir d'une procédure stockée Oracle PL/SQL ?

Comment puis-je récupérer plusieurs jeux de résultats à partir d'une procédure stockée Oracle PL/SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-26 16:32:14545parcourir

How Can I Retrieve Multiple Result Sets from an Oracle PL/SQL Stored Procedure?

Récupération de plusieurs ensembles de résultats à partir d'une procédure stockée Oracle PL/SQL

Dans Oracle PL/SQL, les procédures stockées fournissent un moyen structuré d'encapsuler Requêtes SQL et logique de base de données. Une exigence courante est la nécessité de renvoyer plusieurs ensembles d'enregistrements à partir d'une procédure stockée en fonction d'un argument d'entrée donné. Cela peut être accompli en construisant une fonction PL/SQL qui renvoie une table ou une collection d'objets définis par l'utilisateur (UDO).

Pour créer une fonction qui renvoie un ensemble de résultats, suivez ces étapes :

  1. Définissez un type de table ou un type de collection pour contenir les données.
  2. Créez une fonction qui accepte un argument et déclare une variable locale des données spécifiées. tapez.
  3. Exécutez un curseur ou parcourez les enregistrements de la base de données, en remplissant la variable et en étendant sa taille en conséquence.
  4. Renvoyer la structure de données contenant les ensembles de résultats.

Voici un exemple utilisant un type de table :

SQL> create type emp_obj is object (empno number, ename varchar2(10));
  2  /

Type created.

SQL> create type emp_tab is table of emp_obj;
  2  /

Type created.

SQL> create or replace function all_emps return emp_tab
  2  is
  3     l_emp_tab emp_tab := emp_tab();
  4     n integer := 0;
  5  begin
  6     for r in (select empno, ename from emp)
  7     loop
  8        l_emp_tab.extend;
  9        n := n + 1;
 10       l_emp_tab(n) := emp_obj(r.empno, r.ename);
 11     end loop;
 12     return l_emp_tab;
 13  end;
 14  /

Function created.

Pour récupérer les jeux de résultats d'une simple requête SQL, interrogez simplement le function :

SQL> select * from table (all_emps);

     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

Cette méthode vous permet de récupérer efficacement plusieurs jeux de résultats à partir d'une procédure stockée et de les manipuler comme des tables normales dans vos requêtes SQL.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn