在SELECT分包循环中使用WAIT导致DUMP的备选解决方案

情景

SAP ABAP OPENSQL的分包查询或者SELECT ENDLECT循环查询中,若希望暂停一定的时间再继续查询,我们可能会考虑到使用WAIT UP TO XXX SECONDS这个语法,今天试了下这个写法,会DUMP,原因其实F1就能看到了。

原因

在使用database cursor过程中,不能有commit work和rollback,否则dump DBSQL_INVALID_CURSOR.

Each time the statement WAIT is used, a database commit is triggered (except in updates).

For this reason, WAIT must not be used between Open SQL statements that open or close a database cursor.

对策

对策1

按被查询对象的主键依次查询,和BW增量加载LO数据的逻辑有那么点相似。

在SELECT分包循环中使用WAIT导致DUMP的备选解决方案

对策2

使用函数ENQUE_SLEEP,实际测试了下,可行。

在SELECT分包循环中使用WAIT导致DUMP的备选解决方案

顺便复习下OPENSQL分包

先OPEN CURSOR,然后执行此CURSOR,最后再关闭此CURSOR。

在SELECT分包循环中使用WAIT导致DUMP的备选解决方案

本文作者: GavinDong

版权属于: GavinDong博客

文章链接: https://gavindong.com/9736.html

如果使用过程中遇到问题,可 **点击此处** 交流沟通。

版权所有,转载时必须以链接形式注明作者和原始出处及本声明。

(0)

相关文章

发表回复

登录后才能评论