我打算使用存储过程可调用语句加载数据库。我在JMeter中创建的测试计划如下所示:
- Test plan
- Thread Group
- JDBC Connection Configuration
- JDBC Request
- View results tree
- Summary Report
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中调用存储过程?我很难确定这个要求!
答案 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并且不幸的是,我没有看到“无空格”规则的引用,或者说措辞没有伸出来抓住我。