一、使用场景
需要多次查询数据,并对查询结果进行比较,查询的前后存在依赖,多条记录循环处理。
二、实际场景实例
本文的场景如下:
先查询结果表信息,根据结果表的字段作为条件,用于后续源数据查询语句的条件,并根据源数据算术运算后的结果和结果表的实际结果进行比较。
1. 实际结果数据查询
从结果表中查询出order_no字段信息用于后续查询件,pre_amount字段用于后续比较。
2. 源数据查询
以结果表的order_no的字段为条件,在源数据表中,循环查询原始数据。
难点:
- 如何进行循环控制?
使用场景用例的循环控制器,选择次数循环。
获取sql查询结果行数:${列名_#} ,本场景中实际变量是:${order_no_#}
- 如何在sql查询条件中使用前一步骤结果列单行作为变量赋值?
获取sql查询结果(按列存储的方式): ${列表名_n}
例如:获取第一行的order_no值:${order_no_1}
- 如何在循环控制器中,获取循环次数具体值?
使用计数器:${__counter(,)} , 从1开始。
存在的问题,在第一次循环时,计数器输出结果为2,导致第一行的order_no无法取到、且最后一行取值越界。
解决方案:前置脚本中处理计数值,并设置为场景变量,用于后续引用。
- 如何在循环控制器中使用前一步骤的查询结果列作为sql查询语句的条件?
分析:单行查询条件,需要${order_no_行号}的格式。
解决方案:使用${__V(变量名)}函数,结合计数器,生成变量名表达式,本例中 ${__V(order_no_${count})}。随着每一次循环,其结果对应${order_no_1}、${order_no_2}...实际的列字段值。
3. 结果比较断言
对实际结果pre_amount字段数据和源数据算数运算结果进行比较断言。
标签:场景,no,结果,Sql,接口,查询,循环,MeterSphere,order From: https://blog.csdn.net/zhangshanjia01/article/details/136868114