jmeter jdbc变量名查询

时间:2015-02-16 15:05:08

标签: jdbc jmeter oracle12c

再次为自己作为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":无效的标识符'

再次,如果这是一个愚蠢的问题并且非常感谢所有人/任何人可以提供的任何帮助,那么很多人会道歉!

2 个答案:

答案 0 :(得分:5)

我使用MYSQL模拟了这个概念,但测试计划类似。

  • 获取整数的JDBC预处理器
  • 在以下JDBC请求中使用该整数

首先,JDBC PreProcessor和JDBC Request不仅仅发送到单个变量,而是根据您的名称公开一些变量。例如

  • 查询:选择CAST(RAND()* 242 AS UNSIGNED);
  • 变量名称:foo

这意味着稍后我可以访问

  • $ {foo_#} - 行数(应为1)
  • $ {foo_1} - 第一栏第1行的值

此查询只有一列和一行,否则$ {foo_2}将成为第一列第2行。JDBC Request的更多文档

enter image description here

其次,要在我的JDBC请求中使用,我必须使用Prepared Select语句。传入$ {foo_1}作为参数值,INTEGER作为参数类型传递(我使用的是mysql)。

enter image description here

我发布了模拟load test and JMX File

答案 1 :(得分:0)

我相信使用__intSum()longSum()函数可以更轻松地将“applicationID”变量递增一个。

有关不同JMeter功能的高级信息,放置位置,使用方法等,请参阅How to Use JMeter Functions帖子系列。