【问题】
如何在jmeter的一个脚本里实现增删改查四个sql语句?
【解决】
若在一个请求里实现,则用一个存储过程,把4个操作写在一起。
- 方法一:
在数据库上创建存储过程,再在jmeter上call一下,jdbc类型选择callable statement。 - 方法二:
在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
【解决】执行存储过程的语句不能跟创建语句写在同一个请求里,分开两个请求写。
网友评论
😏😏😏