再次为自己作为Jmeter新手道歉 - 我很少被JDBC请求困住 - 我已经在这个网站上搜索过去3个小时 - 但我可以'找到任何相关的东西(除非我遗漏了什么)。
我的环境:Jmeter v2.11,JDK 7,Oracle 12
非常简单 - 我需要设置一个JDBC Sampler来使用JDBC PreProcessor提供的值。
基本上我有一个JDBCPreProcessor设置来识别下一个(新的)记录的唯一引用(称之为applicationID)
JDBC预处理器详细信息
选择声明 - >从表中选择max(applicationID)+1;
我有一个JDBC Sampler设置,我需要使用' max(applicationID)+ 1'值(由JDBC预处理器确定)
JDBC Sampler详细信息
选择声明 - >从表中选择状态,其中applicationID =' max(applicationID)+ 1'
我不确定如何做到这一点。我查看过指令和许多其他Jmeter JDBC请求帖子,但我担心无法找到我需要的相关信息。
我确实尝试过添加一个变量名称' ' maxrecordidvar'在JDBC PreProcessor中设置JDBC Sampler查询 - >从表中选择applicationID = maxrecordidvar
的状态但是 - 这显然没有用 - 我收到了Oracle错误' ORA-00904:" MAXRECORDIDVAR":无效的标识符'
再次,如果这是一个愚蠢的问题并且非常感谢所有人/任何人可以提供的任何帮助,那么很多人会道歉!
答案 0 :(得分:5)
我使用MYSQL模拟了这个概念,但测试计划类似。
首先,JDBC PreProcessor和JDBC Request不仅仅发送到单个变量,而是根据您的名称公开一些变量。例如
这意味着稍后我可以访问
此查询只有一列和一行,否则$ {foo_2}将成为第一列第2行。JDBC Request的更多文档
其次,要在我的JDBC请求中使用,我必须使用Prepared Select语句。传入$ {foo_1}作为参数值,INTEGER作为参数类型传递(我使用的是mysql)。
我发布了模拟load test and JMX File。
答案 1 :(得分:0)
我相信使用__intSum()或longSum()函数可以更轻松地将“applicationID”变量递增一个。
有关不同JMeter功能的高级信息,放置位置,使用方法等,请参阅How to Use JMeter Functions帖子系列。