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 29 MySQL
MySQL创建高性能索引的全步骤
May 02 MySQL
MySQL优化之如何写出高质量sql语句
May 17 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
Apr 02 MySQL
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
Apr 12 MySQL
MySQL的prepare使用以及遇到的bug
May 11 MySQL
MySQL选择合适的备份策略和备份工具
Jun 01 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
DQL数据查询语句使用示例
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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
基于mysql的论坛(1)
2006/10/09 PHP
php中JSON的使用与转换
2015/01/14 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
Python中文字符串截取问题
2015/06/15 Python
深入理解Python变量与常量
2016/06/02 Python
python万年历实现代码 含运行结果
2017/05/20 Python
Python 私有函数的实例详解
2017/09/11 Python
Python中最大递归深度值的探讨
2019/03/05 Python
python argparser的具体使用
2019/11/10 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
社区创先争优承诺书
2014/08/30 职场文书
美容院合作经营协议书
2014/10/10 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
八年级作文之友谊
2019/12/02 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python