Maison >base de données >tutoriel mysql >Comment appeler une procédure stockée à partir d'une autre dans Oracle ?

Comment appeler une procédure stockée à partir d'une autre dans Oracle ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-01 13:36:12473parcourir

How to Call One Stored Procedure from Another in Oracle?

Comment exécuter des procédures stockées dans d'autres procédures stockées dans Oracle

Introduction :

Appel une procédure stockée à partir d'une autre est une technique précieuse dans Oracle, permettant aux développeurs de connecter en série des opérations de base de données pour des tâches complexes. scénarios.

Solution :

Pour appeler une procédure stockée dans une autre, utilisez l'une des méthodes suivantes :

1. Instruction CALL :

CALL <procedure_name>([arguments]);

Cette méthode utilise le mot-clé SQL CALL et nécessite des parenthèses, même pour les procédures sans arguments.

Exemple :

CALL test_sp_1();

2. Bloc PL/SQL anonyme :

BEGIN
  <procedure_name>([arguments]);
END;

Les blocs PL/SQL permettent l'invocation directe de procédures.

Exemple :

BEGIN
  test_sp_1;
END;

3. Commande EXEC (SQL*Plus uniquement) :

EXEC <procedure_name>([arguments]);

Cette commande est un raccourci pour un bloc PL/SQL anonyme.

Considérations supplémentaires :

  • Assurez-vous que la procédure appelée existe et dispose des privilèges nécessaires.
  • Si les arguments sont transmis, leurs types de données doivent correspondre à ceux spécifiés dans la procédure appelée.
  • Les erreurs rencontrées lors de l'exécution de la procédure seront propagées à la procédure appelante.

Exemple de code :

SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE test_sp AS
BEGIN
    DBMS_OUTPUT.PUT_LINE('Test works');
END;

CREATE OR REPLACE PROCEDURE test_sp_1 AS
BEGIN
    DBMS_OUTPUT.PUT_LINE('Testing');
    test_sp;
END;

CALL test_sp_1();

Sortie :

Testing
Test works

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