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的版本
May 19 MySQL
MySql存储过程之逻辑判断和条件控制
May 26 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
新手入门Mysql--概念
Jun 18 MySQL
MySQL对数据表已有表进行分区表的实现
Nov 01 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
MySQL学习之基础命令实操总结
Mar 19 MySQL
pt-archiver 主键自增
Apr 26 MySQL
MySQL 数据表操作
May 04 MySQL
mysql中关键词exists的用法实例详解
Jun 10 MySQL
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计划任务、定时执行任务的实现代码
2011/04/23 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python求出0~100以内的所有素数
2018/01/23 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
详解python statistics模块及函数用法
2019/10/27 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
django中ImageField的使用详解
2020/12/21 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
校园自助餐厅的创业计划书
2013/12/26 职场文书
员工晚婚的请假条
2014/02/08 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
领导干部个人对照检查材料(群众路线)
2014/09/26 职场文书