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中你可能忽略的COLLATION实例详解
May 12 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
May 29 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
mysql定时自动备份数据库的方法步骤
Jul 07 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
mysql函数全面总结
Nov 11 MySQL
浅谈MySql整型索引和字符串索引失效或隐式转换问题
Nov 20 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
MySQL优化及索引解析
Mar 17 MySQL
MySQL 数据库范式化设计理论
Apr 22 MySQL
Mysql中@和@@符号的详细使用指南
Jun 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中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
php实现文件下载更能介绍
2012/11/23 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
理解javascript async的用法
2017/08/22 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Flask框架web开发之零基础入门
2018/12/10 Python
python中的协程深入理解
2019/06/10 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
Python 随机按键模拟2小时
2020/12/30 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
车间工艺员岗位职责
2013/12/09 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
教师节促销方案
2014/03/22 职场文书
计算机实训报告范文
2014/11/05 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js