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

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

Patricia Arquette
Libérer: 2024-12-28 02:27:10
original
848 Les gens l'ont consulté

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

Renvoi de plusieurs ensembles de résultats à partir d'Oracle PL/SQL

Considérez la nécessité de créer une procédure stockée qui renvoie dynamiquement plusieurs ensembles de résultats en fonction de l'entrée arguments. Voici comment y parvenir dans Oracle PL/SQL :

Création de la procédure stockée

Pour renvoyer plusieurs jeux de résultats, créez d'abord un type d'objet qui représente les données de chaque ensemble de résultats. Par exemple, pour renvoyer les données des employés :

CREATE TYPE EMP_OBJ IS OBJECT (EMPNO NUMBER, ENAME VARCHAR2(10));
Copier après la connexion

Ensuite, créez un type de table qui stocke une collection de ces objets :

CREATE TYPE EMP_TAB IS TABLE OF EMP_OBJ;
Copier après la connexion

Maintenant, créez la procédure stockée. Voici un exemple qui assigne des objets à un tableau et le renvoie :

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

Appel depuis Plain SQL

Une fois la procédure stockée créée, vous pouvez l'appeler SQL simple en utilisant le constructeur TABLE() :

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

Cette requête renverra tous les employés dans un seul résultat table.

Exemple

Considérez la procédure stockée suivante :

CREATE OR REPLACE PROCEDURE GET_EMPLOYEES (
  DEPT INTEGER,
  OUT RECORDS OUT SYS_REFCURSOR
) IS
...
END;
Copier après la connexion

Vous pouvez appeler cette procédure et accéder aux enregistrements renvoyés à l'aide d'un curseur :

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;
Copier après la connexion

En utilisant des types d'objets, des types de tables et des curseurs, vous pouvez renvoyer efficacement plusieurs jeux de résultats à partir d'Oracle PL/SQL stockés procédures. Cela offre flexibilité et efficacité lorsque vous travaillez avec des données complexes dans vos applications.

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