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
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
MySQL Router的安装部署
Apr 24 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
MySQL的索引你了解吗
Mar 13 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 MySQL
MySQL数据库之存储过程 procedure
Jun 16 MySQL
Mysql中mvcc各场景理解应用
Aug 05 MySQL
MySQL深分页问题解决思路
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入门学习笔记之一
2010/10/12 PHP
php过滤敏感词的示例
2014/03/31 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
基于jQuery的倒计时插件代码
2011/05/07 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
python中format()函数的简单使用教程
2018/03/14 Python
pandas string转dataframe的方法
2018/04/11 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
django 实现简单的插入视频
2020/04/07 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
中海讯通笔试题
2015/09/15 面试题
Java程序开发中如何应用线程
2016/03/03 面试题
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
校长就职演讲稿
2014/01/06 职场文书
企业安全生产标语
2014/06/06 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
同学毕业留言寄语
2015/02/27 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
婚礼答谢词范文
2015/09/29 职场文书
导游词之长城八达岭
2019/09/24 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js