找回密码
 立即注册

QQ登录

只需一步,快速开始

恒美恒美
金牌服务用户   /  发表于:2024-9-6 15:11  /   查看:114  /  回复:6
10金币



循环数组,比如一个数组当中有10个订单,执行到第四个订单时,发现没满足我要的条件,那么就跳出当前订单,继续执行第五条订单。

但是我要先在主订单里写一个数据,然后再循环写入子订单的数据,如发现其中一条子订单数据没达到条件,那么该订单就不执行操作,但此时主订单的数据已经写入了,此时怎么在空命令里加一个命令,把写入主订单表的数据清掉,然后跳出当前循环,继续执行下一条数据。


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

6 个回复

倒序浏览
Grayson.Shang活字格认证 Wyn认证
超级版主   /  发表于:2024-9-6 18:04:34
沙发
大佬您好,咱们可以在判断需要跳出循环,并且回滚事务操作,咱们可以使用返回命令, 并且将返回码为非零比如1


测试结果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
恒美恒美
金牌服务用户   /  发表于:2024-9-6 18:36:41
板凳
Grayson.Shang 发表于 2024-9-6 18:04
大佬您好,咱们可以在判断需要跳出循环,并且回滚事务操作,咱们可以使用返回命令, 并且将返回码为非零比 ...

返回命令要放在操作子表数据表命令上面吗?这样会把已经执行的主表数据表也返回并循环下一条订单吗?
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2024-9-6 19:05:50
地板
本帖最后由 Lay.Li 于 2024-9-9 09:23 编辑

大佬,这里使用返回命令的话,这个命令就都终止了,然后之前的数据都会回滚


这里您更新的时候不是有主订单编号么
那后边发现子表出错的话,在else命令中再通过数据表操作将数据更新回去就可以了哈,是有什么其他的问题么?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
恒美恒美
金牌服务用户   /  发表于:2024-9-6 19:08:48
5#
Lay.Li 发表于 2024-9-6 19:05
大佬,这里使用返回命令的话,这个命令就都终止了,然后之前的数据都会回滚

现在我就是如果发现问题,就在else里把主订单改回去,虽然能达到目的,但是感觉貌似不太对
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2024-9-9 09:31:31
6#
一般来说的话,这种回退都是用事务命令去回退的,但是事务命令是必须在子命令报错时才会回退,就如楼上版主所述,执行返回码不为0的返回命令就会回退,但是目前官方的返回命令执行后,整个服务端命令就会终止,后边的循环命令也就不执行了。可以考虑使用其他的返回命令插件,里面有返回后继续执行其他命令的选项

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2024-9-9 11:59:00
7#
还有一种方案是
可以将底下的这一块儿,整体包成另外一个服务端命令B




然后在服务端命令A中去循环去调用这个服务端命令
这里整体包的时候需要注意,使用异常捕获命令套事务命令的方式去做,在不满足条件二的时候,使用返回命令使用返回码不为0的命令,这样出错了事务命令就会回滚操作,然后由于外面又有异常捕获命令,所以这个返回命令不会直接将错误返回给服务端命令A。然后再catch里面返回一个返回码为0但是返回信息为新增失败的内容,给服务端命令A以插入错误的信息,但又不终止服务端命令A的执行,继续循环调用插入其他数据

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部