Maison > base de données > tutoriel mysql > Comment les procédures stockées Oracle PL/SQL peuvent-elles renvoyer plusieurs jeux de résultats ?

Comment les procédures stockées Oracle PL/SQL peuvent-elles renvoyer plusieurs jeux de résultats ?

Barbara Streisand
Libérer: 2024-12-30 01:56:08
original
969 Les gens l'ont consulté

How Can Oracle PL/SQL Stored Procedures Return Multiple Result Sets?

Procédures stockées avec plusieurs ensembles de résultats dans Oracle PL/SQL

Dans Oracle PL/SQL, les procédures stockées peuvent être conçues pour renvoyer plusieurs résultats ensembles basés sur différents arguments. Cela peut améliorer la flexibilité des requêtes et permettre une récupération efficace des données. Pour y parvenir, le concept de tables imbriquées, également appelées types de collections, entre en jeu.

Considérez un scénario dans lequel vous avez besoin d'une procédure stockée pour récupérer dynamiquement les enregistrements des employés en fonction de critères fournis par l'utilisateur. Voici comment vous pouvez l'aborder :

  1. Définir les types de tables imbriquées : Créez des types de tables imbriquées qui contiendront l'ensemble de résultats des objets employés. Ces types servent de modèles pour structurer les données renvoyées.
  2. Créer la procédure stockée : Construisez la procédure stockée avec les paramètres d'entrée et déclarez les variables du type de table imbriquée définie.
  3. Remplir la table imbriquée : dans la procédure stockée, parcourez les données source à l'aide d'un curseur et ajoutez des objets employé à la table imbriquée. variable.
  4. Renvoyer la table imbriquée : Une fois la table imbriquée remplie, renvoyez-la comme résultat de la procédure stockée.
  5. Invoquer à partir de Plain SQL : La procédure stockée peut être invoquée à partir de SQL simple en appelant simplement son nom, en passant des arguments si nécessaire.

Voici un exemple d'implémentation :

TYPE emp_obj IS OBJECT (empno NUMBER, ename VARCHAR2(10));
TYPE emp_tab IS 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;
Copier après la connexion

Maintenant, vous pouvez exécuter cette procédure stockée en SQL simple :

SELECT * FROM TABLE(all_emps);
Copier après la connexion

Cette requête renverra un ensemble de résultats généré dynamiquement avec plusieurs lignes, où chaque ligne représente un objet employé.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal