Maison > Article > base de données > Exemples détaillés de procédures stockées Oracle et d'imbrication
La procédure stockée Oracle est un programme précompilé stocké dans la base de données qui peut être appelé par plusieurs utilisateurs et partagé entre plusieurs applications. Dans les procédures stockées Oracle, l'instruction if est une instruction de contrôle conditionnelle fréquemment utilisée. Elle peut effectuer certaines opérations lorsqu'une condition est vraie et effectuer d'autres opérations lorsque la condition est fausse. L'instruction if peut également être imbriquée. écrivez des instructions if imbriquées et vous pouvez choisir différentes manières en fonction de la situation réelle.
L'instruction if-else est l'instruction if imbriquée la plus courante. Sa syntaxe de base est la suivante :
if (condition1) statement1; else if (condition2) statement2; else if (condition3) statement3; else statement4;
Parmi elles, condition1, condition2 et condition3 sont des conditions if, et instruction1, instruction2, instruction3 et instruction4 indiquent respectivement qu'elles doivent être exécutés lorsque différentes conditions sont remplies.
Par exemple, nous pouvons implémenter une procédure stockée via le code suivant, qui est utilisé pour trouver le salaire d'un employé :
CREATE OR REPLACE PROCEDURE get_salary ( p_empno IN NUMBER, p_salary OUT NUMBER ) AS BEGIN IF p_empno < 1000 THEN p_salary := 1000; ELSE IF p_empno < 2000 THEN p_salary := 2000; ELSE p_salary := 3000; END IF; END IF; END;
Dans la procédure stockée ci-dessus, lorsque p_empno est inférieur à 1000, p_salary se voit attribuer une valeur de 1000 ; lorsque p_empno est compris entre 1000 et 2000, p_salary se voit attribuer une valeur de 2000 ; lorsque p_empno est supérieur ou égal à 2000, p_salary se voit attribuer une valeur de 3000.
En plus des instructions if-else imbriquées, nous pouvons également utiliser des instructions if imbriquées pour implémenter une logique de programmation plus complexe. Par exemple, l'exemple suivant montre comment utiliser une instruction if pour traiter le statut d'une commande de nourriture :
CREATE OR REPLACE PROCEDURE update_order_status ( p_order_no IN NUMBER, p_status IN VARCHAR2 ) AS v_order_status VARCHAR2(10); BEGIN SELECT order_status INTO v_order_status FROM orders WHERE order_no = p_order_no; IF v_order_status = 'NEW' THEN IF p_status = 'APPROVED' THEN UPDATE orders SET order_status = 'APPROVED' WHERE order_no = p_order_no; ELSE UPDATE orders SET order_status = 'REJECTED' WHERE order_no = p_order_no; END IF; ELSIF v_order_status = 'APPROVED' THEN IF p_status = 'SHIPPED' THEN UPDATE orders SET order_status = 'SHIPPED' WHERE order_no = p_order_no; ELSE UPDATE orders SET order_status = 'CANCELED' WHERE order_no = p_order_no; END IF; ELSE RAISE_APPLICATION_ERROR(-20001,'The order is already shipped, cannot be updated.'); END IF; END;
Dans la procédure stockée ci-dessus, nous utilisons des instructions if imbriquées pour déterminer l'opération de mise à jour en fonction du statut actuel de la commande et du statut. qui doit être mis à jour. Lorsque le statut de la commande est « NOUVEAU », si vous devez mettre à jour le statut de la commande sur « APPROVED », exécutez UPDATE commandes SET order_status = 'APPROVED' WHERE order_no = p_order_no ; sinon, mettez à jour le statut de la commande sur « REJECTED » ; le statut est Lorsque « APPROVED », si vous devez mettre à jour le statut de la commande sur « SHIPPED », exécutez UPDATEorders SET order_status = 'SHIPPED' WHERE order_no = p_order_no ; sinon, mettez enfin à jour le statut de la commande sur « ANNULÉ » ; est 'SHIPPED', aucune autre mise à jour du statut de la commande n'est autorisée, sinon une erreur d'application sera générée.
En bref, l'instruction if dans les procédures stockées Oracle est très flexible et peut être imbriquée et utilisée en fonction de la situation réelle pour implémenter diverses logiques de programmation complexes. Lorsque vous utilisez des instructions if, vous devez définir clairement les conditions et les opérations, et essayer d'éviter une imbrication trop profonde pour éviter que le code ne soit trop complexe et difficile à comprendre.
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!