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

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

coldplay.xixi
coldplay.xixioriginal
2020-08-25 10:15:3611878parcourir

Méthode de procédure stockée de débogage MySQL : 1. Utilisez l'instruction "CREATE TEMPORARY TABLE" pour créer une table temporaire pour enregistrer le processus de débogage ; 2. Ajoutez l'instruction "select @xxx" à la procédure stockée ; ouvrez la console, affichez les résultats dans la console et modifiez le code en fonction des résultats de sortie.

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

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Méthode de procédure stockée de débogage MySQL :

Appelez la procédure stockée dans navicat 

1 . Écrivez une déclaration pour appeler

call p_next_id('t_factory',2,'0',@result); -- 上面的存储过程含有四个参数,所以这里调用的时候,也需要传递4个参数:输入参数填写值,输出参数用变量表示@result
select @result; -- 这句话是在控制台显示变量值

2. Cliquez sur

dans la fenêtre et cliquez sur Exécuter directement, entrez dans la zone de saisie contextuelle :

't_factory',2,'0',@result

Trace ( debug) les étapes d'exécution de la procédure stockée

Contrairement à Oracle, mysql dispose de l'outil plsqldevelper pour déboguer les procédures stockées, il existe donc deux façons simples de suivre le processus d'exécution :

  • Utilisez "CREATE TEMPORARY TABLE" L'instruction crée une table temporaire pour enregistrer le processus de débogage

  • Directement dans la procédure stockée, ajoutez select @xxx

  • à afficher sur la console En conséquence, modifiez le code en fonction des résultats de sortie :

Par exemple, j'ai ajouté quelques instructions de requête à la procédure stockée ci-dessus ( notez les déclarations rouges ci-dessous)

CREATE PROCEDURE `p_next_id`(kind_name VARCHAR(30), i_length int,currentSeqNo VARCHAR(3),OUT o_result INT)
BEGIN 
     SET @a= NULL;
     SET @b= NULL;
     SELECT id INTO @a FROM t_seq WHERE number= currentSeqNo and length= i_length ;
   SELECT @a;     
     IF (@a is null ) THEN
            select min(id) into @a FROM t_seq where length = i_length;
            select number  INTO @b FROM t_seq WHERE id = @a;
       select @b;
     ELSE
        select number  INTO @b FROM t_seq WHERE id = @a+1;        
     END IF;        
     SELECT @b INTO o_result;     
END

[Recommandations d'apprentissage associées :apprentissage mysql

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