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 相关文章推荐
Mysql - 常用函数 每天积极向上
Apr 05 MySQL
MySQL分库分表与分区的入门指南
Apr 22 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
MySQL面试题讲解之如何设置Hash索引
Nov 01 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
Mysql中有关Datetime和Timestamp的使用总结
Dec 06 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
MySql按时,天,周,月进行数据统计
Aug 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
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
PHP页面中文乱码分析
2013/10/29 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
PHP.vs.JAVA
2016/04/29 PHP
Stop SQL Server
2007/06/21 Javascript
js 居中漂浮广告
2010/03/21 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
35个Python编程小技巧
2014/04/01 Python
整理Python中的赋值运算符
2015/05/13 Python
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Python操作qml对象过程详解
2019/09/26 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
pandas数据拼接的实现示例
2020/04/16 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
浅析Python 责任链设计模式
2020/09/11 Python
外贸业务员岗位职责
2013/11/24 职场文书
教堂婚礼主持词
2014/03/14 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL