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系列之一 MariaDB-server安装
Jul 02 MySQL
通过shell脚本对mysql的增删改查及my.cnf的配置
Jul 07 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
一文弄懂MySQL索引创建原则
Feb 28 MySQL
MySQL限制查询和数据排序介绍
Mar 25 MySQL
mysql查找连续出现n次以上的数字
May 11 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
MySQL分布式恢复进阶
Jul 23 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
Stop SQL Server
2007/06/21 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Django数据库表反向生成实例解析
2018/02/06 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
七年级英语教学反思
2014/01/15 职场文书
安全标准化实施方案
2014/02/20 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
公证书标准格式
2014/04/10 职场文书
培训师岗位职责
2015/02/14 职场文书
重温入党誓词主持词
2015/06/29 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫