我试图调用DB2存储过程,它有两个输入参数(Timestamp,两者)和一个Output参数(Integer)。我试图从JMeter JDBC Sampler这样做并获得sql语法异常。
Response code: 42884 -440
Response message: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884, SQLERRMC=PROCEDURE;DEVSCHEMA.GET_ROW_COUNT, DRIVER=4.19.26
Response headers:
1272084586, URL=jdbc:db2://<db2IP>:<port>/DB2T, UserName=<someUserName>, IBM Data Server Driver for JDBC and SQLJ
从IBM文档中我知道当存储过程不存在时会发生此错误 - 情况并非如此,模式名称不正确 - 也不是这种情况,参数数量不匹配 - 我验证了这一点但我是在这一点上是值得怀疑的,因为JMeter提供了单独的字段来填充,并且在其中一个字段中我可能传递了不正确的值。
我对JMeter知之甚少,但在apache JMeter文档的帮助下,我已将下面的值设置为Sample Fields。
Query Type: Callable Statement
Query: CALL DEVSCHEMA.GET_ROW_COUNT(?,?,?)
Parameter Values: ${__time(yyyy-MM-dd HH:mm:ss,)},${__time(yyyy-MM-dd HH:mm:ss,)},0
Parameter Types: IN TIMESTAMP,IN TIMESTAMP,OUT INTEGER
Variable Names:VARCOUNT
Handle ResultSet: Store as a String
任何人都可以弄明白我在哪里弄错了吗?非常感谢。
答案 0 :(得分:0)
问题已经解决。从字面上看,这是我从未想过的其他事情。当我尝试使用Java代码访问同一个SP时遇到相同的错误时,我联系了编写存储过程的DB2团队。问题出在SP上。根据他们execute
访问是这样的,所以在这里和那里钻孔之后,他们更愿意创建一个没有任何问题的新SP。从JMeter方面来看,一切都很完美。