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的MVCC多版本并发控制的实现
Apr 14 MySQL
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
52条SQL语句教你性能优化
May 25 MySQL
如何设计高效合理的MySQL查询语句
May 26 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 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将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
PHP7多线程搭建教程
2017/04/21 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
收集的10个免费的jQuery相册
2011/02/26 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
python中文编码问题小结
2014/09/28 Python
python实现统计代码行数的方法
2015/05/22 Python
浅谈python中的占位符
2017/11/09 Python
Python装饰器用法实例分析
2019/01/14 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
授权委托书
2014/07/31 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
2014年司法局工作总结
2014/12/11 职场文书
高中教师个人总结
2015/02/10 职场文书
讲文明倡议书
2015/04/29 职场文书
重阳节活动主持词
2015/07/04 职场文书
学雷锋活动简报
2015/07/20 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers