Maison  >  Article  >  base de données  >  Comment déboguer des procédures stockées dans Oracle

Comment déboguer des procédures stockées dans Oracle

PHPz
PHPzoriginal
2023-04-25 16:12:335400parcourir

La base de données Oracle est un système de gestion de bases de données relationnelles largement utilisé par les grandes entreprises. Ses fonctions puissantes et sa stabilité sont privilégiées par les gens. Dans le processus de développement réel, les développeurs ont souvent besoin d'écrire des procédures stockées pour implémenter diverses logiques métier et peuvent rencontrer des problèmes lors du débogage des procédures stockées.

Cet article expliquera comment déboguer les procédures stockées dans la base de données Oracle.

1. Utilisez SQL Developer pour déboguer les procédures stockées

SQL Developer est un outil de développement de base de données gratuit officiellement fourni par Oracle. Il fournit un débogueur puissant qui peut être utilisé pour déboguer des procédures stockées, des fonctions, des déclencheurs PL/SQL, etc. Ci-dessous, nous prendrons une procédure stockée simple comme exemple pour montrer comment utiliser SQL Developer pour déboguer des procédures stockées.

1. Créer une procédure stockée

Tout d'abord, nous devons créer une procédure stockée simple :

CREATE OR REPLACE PROCEDURE my_proc (p_input IN NUMBER, p_output OUT NUMBER) AS
BEGIN
p_output := p_input * 2;
END ;

Cette procédure stockée reçoit un paramètre d'entrée p_input, le multiplie par 2 et l'affecte au paramètre de sortie p_output. Dans des scénarios réels, les procédures stockées seront plus complexes, mais les méthodes de débogage présentées dans cet article sont également applicables aux procédures stockées complexes.

2. Définir des points d'arrêt

Ensuite, nous devons définir des points d'arrêt dans la procédure stockée pour suspendre le flux du programme et vérifier les valeurs des variables pendant l'exécution. Définir un point d'arrêt dans SQL Developer est très simple. Il vous suffit de sélectionner la ligne où vous souhaitez définir un point d'arrêt dans le code de la procédure stockée, puis de cliquer sur la zone vide à côté du numéro de ligne. Comme le montre l'image ci-dessous, j'ai défini un point d'arrêt sur la ligne 3.

3. Exécutez la procédure stockée

Maintenant, nous pouvons exécuter la procédure stockée dans SQL Developer et suspendre le flux du programme pendant l'exécution pour vérifier la valeur de la variable. Nous pouvons utiliser le code suivant pour exécuter la procédure stockée et passer une valeur de paramètre :

DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
my_proc(v_input, v_output);
END;

Après avoir exécuté ce code , SQL Developer ouvrira automatiquement le débogueur et mettra le programme en pause sur la ligne 3, comme indiqué dans la figure ci-dessous. Nous pouvons voir que la valeur de v_input est 10, et lors de l'exécution étape par étape, la valeur de p_output est également affectée à 20.

4. Vérifier les valeurs des variables

Pendant que le programme est en pause, nous pouvons vérifier la valeur de chaque variable. Vous pouvez afficher la valeur d'une variable en cliquant sur son nom dans le code ou en utilisant la fenêtre Moniteur. Dans SQL Developer, vous pouvez afficher les valeurs de plusieurs variables en même temps en sélectionnant le menu Débogage > Débogage de Windows > Montres et en ajoutant des variables dans la fenêtre du moniteur.

Comme le montre l'image ci-dessous, j'ai ajouté v_input, v_output et p_output à la fenêtre du moniteur, et vous pouvez voir que leurs valeurs sont respectivement 10, 0 et 0.

Ensuite, nous pouvons laisser le programme continuer à s'exécuter jusqu'au prochain point d'arrêt ou à la fin du programme en cliquant sur le bouton "Continuer l'exécution" en haut de la fenêtre du débogueur.

2. Utilisez le package DBMS_DEBUG pour déboguer les procédures stockées

Si vous ne disposez pas de l'outil SQL Developer, vous pouvez également utiliser le package DBMS_DEBUG fourni par Oracle pour déboguer les procédures stockées. Ci-dessous, nous expliquerons comment utiliser le package DBMS_DEBUG.

Le package DBMS_DEBUG est un package d'outils fourni par Oracle Database, grâce auquel vous pouvez définir des points d'arrêt dans les procédures stockées, suspendre le processus d'exécution du programme et vérifier les valeurs des variables du programme. Le débogage des procédures stockées à l'aide du package DBMS_DEBUG nécessite les étapes suivantes :

1. Définir les options de compilation

Tout d'abord, nous devons définir les options de compilation dans la procédure stockée afin que le package DBMS_DEBUG puisse être utilisé. Ajoutez l'instruction suivante avant le code de la procédure stockée :

ALTER SESSION SET PLSQL_DEBUG=TRUE;

2 Démarrez le débogueur

Ensuite, nous devons démarrer le débogueur dans la procédure stockée. Ajoutez le code suivant à la procédure stockée :

DBMS_DEBUG_DBMS_DEBUG.CONNECT_SESSION;

Ce code démarrera le débogueur et attendra que le client se connecte.

3. Connectez le client

Maintenant, nous devons nous connecter à la base de données du client et nous connecter au débogueur que nous venons de démarrer. Dans SQL Plus, vous pouvez utiliser la commande suivante pour vous connecter :

EXEC DBMS_DEBUG_JDWP.CONNECT_TCP('localhost',4000);

Si la connexion réussit, "connecté" sera demandé.

4. Définir des points d'arrêt

Une fois la connexion client réussie, nous pouvons définir des points d'arrêt dans la procédure stockée. Utilisez le code suivant pour définir un point d'arrêt dans la procédure stockée :

DBMS_DEBUG_JDWP.BREAKPOINT('my_proc',4);

Cette commande définira un point d'arrêt sur la ligne 4 de la procédure stockée. my_proc est le nom de la procédure stockée.

5. Exécuter la procédure stockée

Maintenant, nous pouvons exécuter la procédure stockée et mettre le programme en pause pendant l'exécution afin de pouvoir vérifier la valeur de la variable.

Exécutez le code suivant dans SQL Plus :

DECLARE
v_input NUMBER := 10;
v_output NUMBER;
BEGIN
my_proc(v_input, v_output);
END;

Si le débogueur est correctement configuré, le programme se retrouver à l'étape 4. La ligne est en pause. En pause, vous pouvez utiliser les commandes suivantes pour vérifier la valeur de la variable :

DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_input');
DBMS_DEBUG_JDWP.PRINT_VARIABLE('v_output');

Ces deux commandes peuvent afficher les valeurs ​​des variables v_input et v_output .

6. Continuer l'exécution

Après avoir vérifié la valeur de la variable, si vous devez continuer à exécuter le programme, vous pouvez utiliser la commande suivante :

DBMS_DEBUG_JDWP.CONTINUE;

Cette commande poursuivra l'exécution du programme jusqu'au prochain point d'arrêt ou à la fin du programme.

Résumé

Dans la base de données Oracle, le débogage des procédures stockées est une tâche relativement courante. Cet article présente deux méthodes de débogage des procédures stockées, à l'aide de SQL Developer et du package DBMS_DEBUG. Quelle que soit la méthode utilisée, vous pouvez facilement définir des points d'arrêt dans les procédures stockées, suspendre l'exécution du programme et vérifier les valeurs des variables, aidant ainsi les développeurs à localiser rapidement les problèmes et à corriger les bogues.

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