如何使用JDBC请求在JMeter中设置存储过程的参数

时间:2016-06-15 15:37:29

标签: stored-procedures jmeter

我打算使用存储过程可调用语句加载数据库。我在JMeter中创建的测试计划如下所示:

- Test plan
  - Thread Group
     - JDBC Connection Configuration
     - JDBC Request
     - View results tree
     - Summary Report
  • JDBC连接配置基于已经运行的测试。 问题在于我的JDBC请求:
  • 变量名称:与JDBC连接配置中的数据库名称相同
  • 查询类型Callable Statement
  • 查询: {call schema.dbpk_utilities.get_user_id(?,?,?,?,?,?,?)}
  • 参数值: S12345, HR, OUT, NULL,NULL,NULL, NULL
  • 参数类型VARCHAR, VARCHAR, INTEGER, VARCHAR, VARCHAR, VARCHAR, VARCHAR
  • 变量名称username,hr, id, four, five, six, seven

我得到的错误是:

Response message: java.lang.NumberFormatException: For input string:
"OUT"

谁能告诉我为什么回复消息?是否可以在JMeter中调用存储过程?我很难确定这个要求!

2 个答案:

答案 0 :(得分:2)

按照上一篇文章中的“无空间规则”,我发现了为什么请求响应了java.lang.NumberFormatException:对于输入字符串:“OUT”消息。见下文

变量名称: Oracle

SQL查询:可调用的Statament

查询: {call nspishr.dbpk_user_utilities.get_user_details(?,?,?,?,?,?,?)}

参数值: S12345,DMS,OUT,NULL,NULL,NULL,NULL

Par类型: VARCHAR,VARCHAR,OUT INTEGER,VARCHAR,VARCHAR,VARCHAR,VARCHAR

变量名称:用户名,dms,id,四,五,六,七

注意参数在此调用中的注册方式。在我的程序中,参数1和参数2是IN参数。通过在我的情况下给它们一个参数值S12345和HR,它们隐含地成为IN参数。

从参数3到参数7一直是OUT参数。参数4,5,6和7具有NULL值。因此无需将它们注册为OUT参数。然而,参数3(id)是OUT参数,必须通过在参数值中明确说出OUT然后在参数类型中说出OUT INTEGER来进行注册部分。要记住的是,您需要在参数值和参数类型中指定OUT。不要忘记参数类型字段中参数的数据类型。即OUT INTEGER,OUT VARCHAR ......

希望这有帮助

答案 1 :(得分:0)

每当我必须为JMeter提供以逗号分隔的列表时,我确保逗号之前/之后没有空格。我称之为“无空格”规则。

海报sqeeky也发现了这个技巧here,sqeeky说:

  

逗号分隔parm名称后没有任何空格,而不是'$ {appid_1},$ {appid_2}'(你可以看到有一个空格分隔ParameterName值,指定$ {appid_1},$ {appid_2}而不是ParameterName列表中的值 - 否则在此示例中将不包含$ {appid_2}。

所有三个以逗号分隔的列表(参数值,参数类型,变量名称)都违反了“无空格”规则。尝试取出所有三个列表中的所有空格并再试一次。

我结帐the doc并且不幸的是,我没有看到“无空格”规则的引用,或者说措辞没有伸出来抓住我。