【测试】JMeter调用存储过程
JMeter是可以直接调用SQL语句或者存储过程来完成测试的,这次就给大家讲一下如何通过调用MySQL存储过程完成测试。
首先我们先创建一个数据库连接池的配置信息:
如上图所示,已填写的参数描述如下:
- Name:数据库连接池在JMeter中别名
- Variable Name for created pool:配置信息作为变量名称的别名,这里我填写了DB_POOL
- Max Number of Connections:最大的连接数
- Max Wait:最大的等待时间
- Time Between Eviction Runs:请求驱逐时间间隔
- Auto Commit:自动提交
- Transaction isolation:事务
- Preinit Pool:预设连接池
- Soft Min Evictable Idle Time:最小等待时间
- Validation Query:验证脚本
- Database Url:数据库连接地址
- JDBC Driver class:数据库连接类
- Username:用户账号
- Password:用户密码
从上面的配置可看出大部分配置都采用了动态变量的方式进行填写,像Validation Query、Max Wait等。这些变量将通过另一个User default variable进行定义。
接下来为了调用JDBC存储过程需要新建一个来自JDBC Request的Sampler。
创建了JDBC Request后通过填写“DB_POOL”即可将之前配置的数据库连接池进行应用。
在Variable Name of Pool declared in JDBC Connection Configuration中填入“DB_POOL”即可。由于我们需要调用的是存储过程,所以在Query Type中选择Callable Statement。而在Query输入框中填入调用存储过程的命令即可调用存储过程。
PS:第一次调用的时候可能会出现Cannot load JDBC driver class \’com.mysql.jdbc.Driver\’错误。
MySQL中的存储过程(详细篇)
概述
由MySQL5.0 版本开始支持存储过程。
如果在实现用户的某些需求时,需要编写一组复杂的SQL语句才能实现的时候,那么我们就可以将这组复杂的SQL语句集提前编写在数据库中,由JDBC调用来执行这组SQL语句。把编写在数据库中的SQL语句集称为存储过程。
存储过程:(PROCEDURE)是事先经过编译并存储在数据库中的一段SQL语句的集合。调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是很有好处的。
就是数据库 SQL 语言层面的代码封装与重用。

存储过程就类似于Java中的方法,需要先定义,使用时需要调用。存储过程可以定义参数,参数分为IN、OUT、INOUT类型三种类型。
- IN类型的参数表示接受调用者传入的数据;
- OUT类型的参数表示向调用者返回数据;
- INOUT类型的参数即可以接受调用者传入的参数,也可以向调用者返回数据。
- 存储过程是通过处理封装在容易使用的单元中,简化了复杂的操作。
- 简化对变动的管理。如果表名、列名、或业务逻辑有了变化。只需要更改存储过程的代码。使用它的人不用更改自己的代码。
- 通常存储过程都是有助于提高应用程序的性能。当创建的存储过程被编译之后,就存储在数据库中。
- 但是,MySQL实现的存储过程略有所不同。
- MySQL存储过程是按需编译。在编译存储过程之后,MySQL将其放入缓存中。
- MySQL为每个连接维护自己的存储过程高速缓存。如果应用程序在单个连接中多次使用存储过程,则使用编译版本,否则存储过程的工作方式类似于查询。
- 存储过程有助于减少应用程序和数据库服务器之间的流量。
- 因为
- 应运
- 程序不必发送多个冗长的SQL语句,只用发送存储过程中的名称和参数即可。
- 存储过程度任何应用程序都是可重用的和透明的。存储过程将数据库接口暴露给所有的应用程序,以方便开发人员不必开发存储过程中已支持的功能。
- 存储的程序是安全的。数据库管理员是可以向访问数据库中存储过程的应用程序授予适当的权限,而不是向基础数据库表提供任何权限。
- 如果使用大量的存储过程,那么使用这些存储过程的每个连接的内存使用量将大大增加。
- 此外,如果在存储过程中过度使用大量的逻辑操作,那么CPU的使用率也在增加,因为MySQL数据库最初的设计就侧重于高效的查询,而不是逻辑运算。
- 存储过程的构造使得开发具有了复杂的业务逻辑的存储过程变得困难。
- 很难调试存储过程。只有少数数据库管理系统允许调试存储过程。不幸的是,MySQL不提供调试存储过程的功能。
- 开发和维护存储过程都不容易。
- 开发和维护存储过程通常需要一个不是所有应用程序开发人员拥有的专业技能。这可能导致应用程序开发和维护阶段的问题。
- 对数据库依赖程度较高,移值性差。
存储过程中的参数分别是 in,out,inout三种类型;
- in代表输入参数(默认情况下为in参数),表示该参数的值必须由调用程序指定。
- ou代表输出参数,表示该参数的值经存储过程计算后,将out参数的计算结果返回给调用程序。
- inout代表即时输入参数,又是输出参数,表示该参数的值即可有调用程序制定,又可以将inout参数的计算结果返回给调用程序
存储过程中的语句必须包含在BEGIN和END之间。
调用存储过程
先定义一个student数据库表:
现在要查询这个student表中的sex为男的有多少个人。
调用这个存储过程
IF 语句包含多个条件判断,根据结果为 TRUE、FALSE执行语句,与编程语言中的 if、else if、else 语法类似。
调用这个存储过程
case是另一个条件判断的语句,类似于编程语言中的 choose、when语法。MySQL 中的 case语句有两种语法格式。
- 第一种
调用这个存储过程
2.第二种
调用此函数

调用此函数
REPEATE…UNTLL 语句的用法和 Java中的 do…while 语句类似,都是先执行循环操作,再判断条件,区别是REPEATE 表达式值为 false时才执行循环操作,直到表达式值为 true停止。
调用此函数
定义一个循环语句 LOOP
循环语句,用来重复执行某些语句。
执行过程中可使用 LEAVE语句或者ITEREATE来跳出循环,也可以嵌套IF等判断语句。
- LEAVE 语句效果对于Java中的break,用来终止循环;
- ITERATE语句效果相当于Java中的continue,用来跳过此次循环。进入下一次循环。且ITERATE之下的语句将不在进行。
调用此函数
调用此函数
再次调用次函数
在mybatis当中,调用存储过程
调用数据库管理
通过这样就可以调用数据库中的存储过程的结果。
标题:如何调试存储过程 调试存储过程方法【存储过程单步调试】
链接:https://yqqlyw.com/news/rj/65018.html
版权:文章转载自网络,如有侵权,请联系删除!
用户评论
这个教程真是太棒了!我一直都卡在调试存储过程中,感觉就像是在伸手不见五指的黑洞里摸索。 你的解释清晰易懂,单步调试的方法简直太棒了,让我一下子就看明白了。现在再也不用担心那些诡异的错误了!
有9位网友表示赞同!
我也一直用的sql server自带的存储过程调试功能,挺简单的嘛,不过你的方法好像更详细一些,而且这个“断点”功能还真是个好东东~ 我以后改试试。
有7位网友表示赞同!
其实我觉得调试存储过程最难的就是找到问题所在。你的笔记可以帮助我快速定位到潜在的问题点,这非常省时省力!
有10位网友表示赞同!
感觉学习这个单步调试方法还是比较费时费力的,我更喜欢直接修改代码然后跑一下看看结果出来是不是对的了。不过你的文章内容确实很全面,值得参考。
有20位网友表示赞同!
存储过程这么复杂的东西,调试起来真的让人头疼。幸好有你这样详细的文章来指点迷津!这个单步调试方法的确能有效地帮助我们快速找到问题所在。
有19位网友表示赞同!
我以前都是把所有代码都打印出来一遍一遍检查找错误,现在想起来真是太慢了!你的方法简直是神助!以后我要改用单步调试的的方法了。
有18位网友表示赞同!
这个调试工具还是挺有用的,但是如果程序复杂一点,调试起来依然很考验耐心。希望能够找到更便捷的方式,比如自动检测错误的方式之类的。
有11位网友表示赞同!
我觉得存储过程调试并不是一件容易的事情, 但你的方法确实能帮助我理解一些关键点。谢谢你的分享!
有20位网友表示赞同!
单步调试虽然好用,但有时为了效率我会选择快速查找,直接判断代码逻辑错误的地方。这两种方法各有优缺点,需要根据实际情况灵活运用。
有6位网友表示赞同!
对于我们刚接触存储过程的人来说,这篇教程非常实用! 我已经开始尝试使用单步调试了,感觉真是太棒了!
有14位网友表示赞同!
我平时习惯于用工具来调试存储过程,这个笔记确实是一个很好的参考! 但是我觉得如果能够添加一些更深入的技巧和案例,会更加完善!
有15位网友表示赞同!
我虽然不是很熟悉这个单步调试的方法,但你的文章解释得很有条理,逻辑清晰。相信认真学习的话,一定能掌握这个方法。
有11位网友表示赞同!
存储过程调试确实是一块需要学习的知识点。看了你的教程后,感觉可以尝试学习下单步调试方法,它真的很管用!
有15位网友表示赞同!
我觉得对于不同数据库系统来说,存储过程的调试方法可能会有所差异,你可以在文章中多加一些说明!
有20位网友表示赞同!
我一直都觉得存储过程调试比较复杂,你的教程让我眼前一亮! 希望能够将这些方法应用到实际工作中!
有18位网友表示赞同!
这篇教程虽然讲得很清楚,但对于我来说还是有些难度。也许需要多练习几次才能真正理解和掌握单步调试的方法!
有12位网友表示赞同!
存储过程的功能强大,但是往往也带来一些调试的困难。你的方法真的很实用,让我感觉更自信地去面对存储过程的调试了!
有15位网友表示赞同!
虽然我不太擅长编程,但这篇文章还是很有帮助! 单步调试的确是一个非常好的方法,有助于我们更好地理解代码执行过程!
有19位网友表示赞同!
我认为学习存储过程单步调试的方法,可以大大提升我们的开发效率!值得推荐给大家!
有18位网友表示赞同!