Maison  >  Article  >  base de données  >  Comment passer un appel avec des paramètres dans une procédure stockée Oracle

Comment passer un appel avec des paramètres dans une procédure stockée Oracle

PHPz
PHPzoriginal
2023-04-25 09:01:241948parcourir

La procédure stockée Oracle est une instruction SQL précompilée et réutilisable qui est stockée dans la base de données et peut être exécutée et appelée à tout moment. Dans les procédures stockées Oracle, vous pouvez utiliser des paramètres pour obtenir des appels plus flexibles. Cet article explique comment utiliser les paramètres dans les procédures stockées Oracle.

Créez une procédure stockée et définissez les paramètres

Dans la base de données Oracle, la création d'une procédure stockée nécessite l'utilisation de l'instruction CREATE PROCEDURE. Voici un exemple simple : CREATE PROCEDURE 语句。以下是一个简单的例子:

CREATE OR REPLACE PROCEDURE get_employee_details(
    employee_id IN NUMBER,
    employee_name OUT VARCHAR2,
    hire_date OUT DATE,
    salary OUT NUMBER
)
AS
BEGIN
    SELECT e.employee_name, e.hire_date, e.salary 
    INTO employee_name, hire_date, salary
    FROM employees e
    WHERE e.employee_id = employee_id;
END;

上面的代码创建了一个名为 get_employee_details 的存储过程,该存储过程具有四个参数:employee_id(IN 类型的输入参数)、employee_namehire_datesalary(OUT 类型的输出参数)。存储过程的作用是根据 employee_id 参数查询员工的详细信息,并将查询结果存储在输出参数中。

调用存储过程

当存储过程创建成功后,就可以使用 EXECUTE 语句来调用它。以下是调用存储过程的代码:

DECLARE
    emp_name VARCHAR2(50);
    emp_hire_date DATE;
    emp_salary NUMBER;
BEGIN
    get_employee_details(101, emp_name, emp_hire_date, emp_salary);
    DBMS_OUTPUT.PUT_LINE('Employee Name : ' || emp_name);
    DBMS_OUTPUT.PUT_LINE('Hire Date : ' || emp_hire_date);
    DBMS_OUTPUT.PUT_LINE('Salary : ' || emp_salary);
END;

在上面的代码中,首先声明三个变量 emp_nameemp_hire_dateemp_salary,然后通过调用存储过程 get_employee_details 并传入参数 101,同时将输出参数赋值给上述声明的变量。最后,使用 DBMS_OUTPUT 包中的 PUT_LINE 函数输出查询结果。

需要注意的是,DECLAREBEGIN 语句是必须的,因为它们表示了一个代码块的起始和结束。在代码块中,可以声明变量、调用存储过程、执行各种 SQL 语句等。

参数的类型

在定义存储过程的参数时,可以使用以下类型:

  • IN:表示输入参数,这些参数用于向存储过程中传递值。
  • OUT:表示输出参数,这些参数用于从存储过程中返回值。
  • IN OUT:表示既是输入参数又是输出参数。这些参数既能够向存储过程中传递值,又能从存储过程中返回值。

除了上述类型外,还可以使用 NOCOPYrrreee

Le code ci-dessus crée une procédure stockée nommée get_employee_details, qui a quatre paramètres : employee_id (paramètres d'entrée de type IN), employee_name , hire_date et salary (paramètres de sortie de type OUT). La fonction de la procédure stockée est d'interroger les informations détaillées de l'employé en fonction du paramètre employee_id et de stocker les résultats de la requête dans le paramètre de sortie.

Appeler la procédure stockée

Une fois la procédure stockée créée avec succès, vous pouvez utiliser l'instruction EXECUTE pour l'appeler. Voici le code qui appelle la procédure stockée :
    rrreee
  • Dans le code ci-dessus, déclarez d'abord les trois variables emp_name, emp_hire_date et emp_salary , puis En appelant la procédure stockée get_employee_details et en passant le paramètre 101, les paramètres de sortie sont affectés aux variables déclarées ci-dessus. Enfin, utilisez la fonction PUT_LINE dans le package DBMS_OUTPUT pour afficher les résultats de la requête.
  • Il est à noter que les instructions DECLARE et BEGIN sont nécessaires car elles représentent le début et la fin d'un bloc de code. Dans le bloc de code, vous pouvez déclarer des variables, appeler des procédures stockées, exécuter diverses instructions SQL, etc.
  • Types de paramètres
Lors de la définition des paramètres d'une procédure stockée, vous pouvez utiliser les types suivants :

IN : représente les paramètres d'entrée, qui sont utilisés pour transmettre des valeurs à la procédure stockée .

🎜OUT : représente les paramètres de sortie, qui sont utilisés pour renvoyer les valeurs des procédures stockées. 🎜🎜IN OUT : Indique qu'il s'agit à la fois d'un paramètre d'entrée et d'un paramètre de sortie. Ces paramètres peuvent à la fois transmettre des valeurs et renvoyer des valeurs à partir de procédures stockées. 🎜🎜🎜En plus des types ci-dessus, vous pouvez également utiliser le mot-clé NOCOPY pour définir des paramètres, ce qui peut éviter la copie de la mémoire lors du transfert des paramètres, améliorant ainsi l'efficacité de l'exécution. 🎜🎜Scénarios d'application🎜🎜Dans le développement réel, l'appel de paramètres de procédures stockées est très courant et peut être appliqué dans plusieurs scénarios. Voici quelques scénarios d'application typiques : 🎜🎜🎜Requête paramétrée : dans la procédure stockée, les paramètres d'entrée peuvent être définis afin que la procédure stockée puisse exécuter différentes instructions de requête en fonction de différents paramètres d'entrée, réalisant ainsi des requêtes paramétrées. 🎜🎜Opération par lots : dans le processus stocké, vous pouvez définir des paramètres d'entrée et des paramètres de sortie, afin que le processus stocké puisse effectuer des opérations par lots basées sur les paramètres d'entrée, et en même temps stocker les résultats du traitement dans les paramètres de sortie, réduisant ainsi le nombre d'opérations ultérieures. 🎜🎜Traitement des transactions : dans la procédure stockée, les paramètres d'entrée peuvent être utilisés pour contrôler la soumission ou l'annulation de la transaction, obtenant ainsi une méthode de traitement des transactions plus flexible. 🎜🎜🎜Résumé🎜🎜Cet article présente la méthode d'utilisation des appels de paramètres dans les procédures stockées Oracle. En règle générale, les appels paramétrés aux procédures stockées peuvent améliorer considérablement la réutilisabilité et la flexibilité du code, et peuvent fournir aux applications des fonctionnalités plus flexibles. Par conséquent, dans le développement réel, les appels paramétrés de procédures stockées doivent être pleinement utilisés pour améliorer les performances et la maintenabilité du système. 🎜

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