【JMeter】jdbc-procedure:mysql存储过程一步实现增删改查

【问题】

如何在jmeter的一个脚本里实现增删改查四个sql语句?

【解决】

若在一个请求里实现,则用一个存储过程,把4个操作写在一起。

  1. 方法一:
    在数据库上创建存储过程,再在jmeter上call一下,jdbc类型选择callable statement。
  2. 方法二:
    在jmeter的一个请求里创建存储过程,另一个请求执行,jdbc类型均选择callable statement。
一、【Mysql数据库实现存储过程】
DELIMITER ||
DROP PROCEDURE IF EXISTS sp_test;
create PROCEDURE sp_test()
BEGIN
   insert into test_copy (id,name,age) values(8,'ss1','9'),(9,'ss2','9'),(10,'ss3','9');
   update test_copy set age=4 where name like '%ss%';
   select * from test_copy WHERE age='4';
   delete from test_copy where age='4';
END ||

call sp_test;
执行结果
二、【Jmeter实现存储过程】
-- 请求1:创建存储过程
DROP PROCEDURE IF EXISTS sp_test;
create PROCEDURE sp_test()
BEGIN
   insert into test_copy (id,name,age) values(8,'ss1','9'),(9,'ss2','9'),(10,'ss3','9');
   update test_copy set age=4 where name like '%ss%';
   select * from test_copy WHERE age='4';
   delete from test_copy where age='4';
END 
-- 请求2:执行存储过程
call sp_test;
jmeter创建存储过程
创建存储过程results
jmeter执行存储过程
执行存储过程results
注意:

在mysql里执行成功的语句,黏贴到Jmeter里,需要把分隔符 DELIMITER 去掉。

三、【Jmeter报错】

【error1】
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER ||
DROP PROCEDURE IF EXISTS sp_test;
create PROCEDURE sp_test' at line 1
【解决】把把分隔符 DELIMITER || 注释掉

【error2】
Can not issue data manipulation statements with executeQuery().
【解决】jdbc类型 Query Type选择 callable statement。

【error3】
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call sp_test201809b' at line 10
【解决】执行存储过程的语句不能跟创建语句写在同一个请求里,分开两个请求写。

你可能感兴趣的:(【JMeter】jdbc-procedure:mysql存储过程一步实现增删改查)