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 InnoDB存储引擎的内存管理
Apr 08 MySQL
一篇文章弄懂MySQL查询语句的执行过程
May 07 MySQL
浅谈mysql执行过程以及顺序
May 12 MySQL
mysql 如何获取两个集合的交集/差集/并集
Jun 08 MySQL
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
Aug 02 MySQL
MySQL基础快速入门知识总结(附思维导图)
Sep 25 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
Nov 17 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
May 25 MySQL
Mysql中的触发器定义及语法介绍
Jun 25 MySQL
数据设计之权限的实现
Aug 05 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返回字符串中所有单词的方法
2015/03/09 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
javaScript arguments 对象使用介绍
2013/10/18 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
python PyTorch预训练示例
2018/02/11 Python
py-charm延长试用期限实例
2019/12/22 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
学校办公室主任职责
2013/12/27 职场文书
小学生通知书评语
2014/12/31 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript