Mysql中调试存储过程最简单的方法


Posted in MySQL onJune 30, 2021

以前同事告诉我用临时表插入变量数据来查看,但是这种方法过于麻烦,而且Mysql没有比较好的调试存储过程的工具。今天google了下发现可以用select + 变量名的方法来调试

具体方法:

在你的存储过程中加入如下语句:
SELECT 变量1,变量2;

然后用mysql自带的cmd程序进入mysql> 下。
call 你的存储过程名(输入参数1,@输出参数);(注:这里帮助下新同学,如果你的存储过程有输出变量,那么在这里只需要加 @ 然后跟任意变量名即可);
即可发现你的变量值被打印到了cmd下,简单吧?呵呵 希望能帮到诸位。

有如下一个存储过程

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 ;          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;ELSE
        select number  INTO @b FROM t_seq WHERE id = @a+1;        
     END IF;        
     SELECT @b INTO o_result;     
END

在navicat中调用存储过程 


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

直接点击运行时,在弹出输入框输入:'t_factory',2,'0',@result

追踪存储过程执行步骤

mysql不像oracle有plsqldevelper工具用来调试存储过程,所以有两简单的方式追踪执行过程:

用一张临时表,记录调试过程
直接在存储过程中,增加select @xxx,在控制台查看结果:
例如我把上面的存储过程中加一些查询语句(注意下面的红色语句)

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

到此这篇关于Mysql中调试存储过程最简单的方法的文章就介绍到这了,更多相关Mysql调试存储过程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
IDEA 链接Mysql数据库并执行查询操作的完整代码
May 20 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
MySQL系列之三 基础篇
Jul 02 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
MySQL为数据表建立索引的原则详解
Mar 03 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
mysql如何配置白名单访问
Jun 30 #MySQL
Mysql数据库按时间点恢复实战记录
浅析MySQL如何实现事务隔离
MySQL开启事务的方式
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 #MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
Jun 26 #MySQL
You might like
mysql5详细安装教程
2007/01/15 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php include类文件超时问题处理
2015/02/06 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
JS date对象的减法处理实现代码
2010/12/28 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
python 获取网页编码方式实现代码
2017/03/11 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
2014年情人节活动方案
2014/02/16 职场文书
化工操作工岗位职责
2014/04/29 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
学风建设演讲稿
2014/09/12 职场文书
资料员岗位职责范本
2015/04/13 职场文书
走进毛泽东观后感
2015/06/04 职场文书
致运动员加油稿
2015/07/21 职场文书
创业计划书之养殖业
2019/10/11 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
Java 数据结构七大排序使用分析
2022/04/02 Java/Android