Maison  >  Article  >  base de données  >  valeur de retour de la procédure stockée Oracle

valeur de retour de la procédure stockée Oracle

王林
王林original
2023-05-08 10:40:371180parcourir

Les procédures stockées Oracle sont des blocs de code précompilés et réutilisables car elles permettent aux développeurs de créer, tester et exécuter du code dans la base de données sans avoir besoin de se connecter à des applications externes. L'un des principaux avantages des procédures stockées Oracle est l'amélioration des performances et de la sécurité des bases de données, mais elles nécessitent un traitement spécial lorsqu'elles doivent renvoyer des valeurs.

Les caractéristiques des valeurs de retour des procédures stockées sont déterminées en fonction des besoins réels de l'entreprise, car certaines procédures stockées ne peuvent être utilisées que pour déclencher certaines opérations sans renvoyer aucune valeur, comme certaines opérations de notification dans les opérations de mise à jour. Cependant, dans d'autres cas, la procédure stockée peut devoir renvoyer une valeur simple, telle qu'un nombre, une chaîne ou une valeur booléenne, ou dans d'autres conditions, une collection ou une table de données.

Tout d'abord, regardons un exemple de la façon dont une procédure stockée renvoie une valeur unique :

CREATE OR REPLACE PROCEDURE get_employee_count(p_department varchar2, p_employee_count out number) 
IS 
BEGIN 
    SELECT COUNT(*) INTO p_employee_count FROM employees WHERE department = p_department; 
END;

Dans cet exemple, la procédure stockée reçoit un paramètre de nom de département et renvoie le nombre total d'employés dans ce département. Dans la définition de la procédure, nous utilisons un paramètre OUT pour renvoyer le résultat. Dans la partie principale, nous exécutons une requête SELECT et stockons les résultats dans le paramètre p_employee_count.

Pour appeler cette procédure stockée et récupérer la valeur de retour, nous pouvons utiliser le code suivant :

DECLARE 
    v_employee_count NUMBER; 
BEGIN 
    get_employee_count('IT', v_employee_count); 
    DBMS_OUTPUT.PUT_LINE('Total Employees in IT department:'||v_employee_count); 
END; 

Dans cet exemple, nous définissons une variable v_employee_count à l'aide du bloc DECLARE et la transmettons à la procédure stockée. Nous appelons ensuite la procédure stockée dans la section body et affichons les résultats dans la sortie.

Concernant l'utilisation de procédures stockées pour renvoyer des ensembles de résultats, nous pouvons également utiliser une technologie de table/curseur distincte pour la gérer.

CREATE OR REPLACE TYPE Employee AS OBJECT 
( 
    employee_id NUMBER(6), 
    first_name VARCHAR2(20), 
    salary NUMBER(8,2) 
); 

CREATE OR REPLACE TYPE EmployeeList AS TABLE OF Employee; 

CREATE OR REPLACE PROCEDURE get_employees(p_department VARCHAR2, p_employee_list OUT EmployeeList) 
IS 
BEGIN 
    SELECT Employee(EMPLOYEE_ID, FIRST_NAME, SALARY) BULK COLLECT INTO p_employee_list FROM employees WHERE department = p_department; 
END; 

DECLARE 
    v_employee_list EmployeeList; 
BEGIN 
    get_employees('IT', v_employee_list); 
    FOR i IN v_employee_list.first .. v_employee_list.LAST LOOP 
        DBMS_OUTPUT.PUT_LINE(v_employee_list(i).employee_id||' - '||v_employee_list(i).first_name); 
    END LOOP; 
END; 

Dans cet exemple, nous définissons un type d'objet appelé Employee, qui contient les attributs Employee_id, First_name et Salaire. Nous définissons également un type EmployeeList, qui est une collection d'objets Employee. Enfin, nous avons créé une procédure stockée get_employees qui reçoit le nom du service et renvoie une liste des employés de ce service.

Dans le corps de la procédure stockée, nous exécutons une requête SELECT et utilisons l'instruction BULK COLLECT INTO pour convertir l'ensemble de résultats en un objet EmployeeList.

Pour appeler cette procédure stockée, et récupérer l'ensemble de résultats, nous pouvons utiliser le code suivant :

DECLARE 
    v_employee_list EmployeeList; 
BEGIN 
    get_employees('IT', v_employee_list); 
    FOR i IN v_employee_list.FIRST .. v_employee_list.LAST LOOP 
        DBMS_OUTPUT.PUT_LINE(v_employee_list(i).employee_id||' - '||v_employee_list(i).first_name||' - '||v_employee_list(i).salary); 
    END LOOP; 
END; 

Dans cet exemple, nous définissons une variable v_employee_list de type EmployeeList et la passons à la procédure stockée get_employees. Nous utilisons ensuite une boucle FOR pour parcourir la collection et afficher les propriétés de chaque objet Employee dans la sortie.

Dans cet article, nous avons examiné les différentes manières de renvoyer des valeurs dans les procédures stockées Oracle, y compris les méthodes de renvoi de valeurs individuelles et d'ensembles de résultats. Quels que soient les besoins de votre application, les procédures stockées constituent un outil puissant qui peut améliorer les performances et la sécurité des bases de données tout en fournissant des blocs de code réutilisables.

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
Article précédent:oracle remplacer la chaîneArticle suivant:oracle remplacer la chaîne