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 22 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
MySQL外键约束(FOREIGN KEY)案例讲解
Aug 23 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
Mysql如何实现不存在则插入,存在则更新
Mar 25 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
Mysql开启外网访问
May 15 MySQL
关于mysql中string和number的转换问题
Jun 14 MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 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列出一个目录下的所有文件的代码
2012/10/09 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
微信小程序五星评分效果实现代码
2017/04/06 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
javascript 易错知识点实例小结
2020/04/25 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
介绍一下你对SOA的认识
2016/04/24 面试题
公司经理任命书
2014/06/05 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
安全学习心得体会范文
2016/01/18 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python