Maison >base de données >tutoriel mysql >Une procédure stockée Oracle peut-elle en appeler une autre ?

Une procédure stockée Oracle peut-elle en appeler une autre ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-25 04:15:09960parcourir

Can One Oracle Stored Procedure Call Another?

Appel d'une procédure stockée dans une autre dans Oracle

Problème :

Il est possible de appeler une procédure stockée depuis une autre dans Oracle ? Si oui, comment pouvez-vous y parvenir ?

Exemple de code :

SET SERVEROUTPUT ON;

DROP PROCEDURE test_sp_1;
DROP PROCEDURE test_sp;

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

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

CALL test_sp_1;

Solution :

Le code de test fourni crée et initialise avec succès les procédures stockées. Cependant, le problème réside dans la dernière ligne, qui tente d'invoquer les procédures mais échoue.

Il existe trois façons d'invoquer des procédures stockées dans SQL*Plus :

  1. APPEL : Nécessite des parenthèses, même pour les procédures sans arguments.
CALL test_sp_1();
  1. Bloc PL/SQL anonyme : Permet l'exécution en ligne du code.
BEGIN
    test_sp_1;
END;
/
  1. EXEC : Une commande SQL*Plus qui est un raccourci pour un utilisateur anonyme bloquer.
EXEC test_sp_1

Exemple :

SQL> CALL test_sp_1();
Testing
Test works

Call completed.

SQL> EXEC test_sp_1
Testing
Test works

PL/SQL procedure successfully completed.

SQL> BEGIN
  2      test_sp_1;
  3  END;
  4  /
Testing
Test works

PL/SQL procedure successfully completed.

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