点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
一个计算读取另一个计算的输出(相当快,大约20秒),将它们放入游标,在FOR循环中使用该游标,在FOR循环中读取每一行,然后将其写入输出变量。
问题在于,这种新的计算速度非常慢,大约花费了一个小时。
可能是什么问题? 第一次计算的行和列很多(大约20列和40.000行)。
感谢任何想法!
DECLARE CURSOR c_read FOR(从
var_Exit =从哑元中选择null作为field1,选择null作为field2;
FOR cur_row作为c_read DO
...一些简单的逻辑,在其中读取游标...
var_exit =从*:var_exit中选择*
全部合并
从虚拟对象中选择cur.row.field1和cur_row.field2;
END FOR;
关闭c_read;
var_out =从var_Exit中选择*;
作为 SQLScript的最佳做法-避免使用游标 官方文档中的章说,应尽可能避免使用游标。 由于您不共享在游标循环内执行的"简单逻辑",因此,如果可以用纯SQL逻辑替换您的游标逻辑,或者使用地图合并运算符很有意义。
也许您可以检查一下 您可以使用纯SQL或Map Merge运算符重构逻辑,也可以共享更多详细信息。
致谢,
Florian
如果需要访问 上一行/下一行我将检查是否可以使用HANA窗口函数LAG和LEAD来实现您的逻辑(取决于您是否要检查上一行或下一行)。
如果这有用,我发现了另一种无需创建序列即可添加增量ID的方法:
选择row_number()OVER(按column_1,column_2的顺序排序)AS row_number,* FROM:table;
听起来像是窗口函数的工作... p>
我通过SQL解析...我创建了一个序列,向计算输出中添加了增量ID,然后在seq = seq-1上将其与自身连接起来,以便可以比较当前和 上一行并设置字段值。
一周热门 更多>