HANA光标顺序不起作用

2020-09-26 07:24发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我必须使用游标以一定...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我必须使用游标以一定顺序遍历所有行。 但是,在我按顺序实施它之后,结果却不符合预期。 我用:: rowcount记录了结果,并注意到按的顺序并没有真正起作用。

我尝试在数据集中生成行号,然后按行号循环遍历各行,它将以这种方式工作。 但是它比游标花费的时间长得多。

您知道HANA是否真的支持通过光标使用order by?

3条回答
一只江湖小虾
2020-09-26 07:50

我都尝试过这两个。这是使用提取的方法。

开始
 DECLARE LV_MIN_MVI_DT日期:= TO_date('19000101','YYYYMMDD');
 DECLARE LV_COUNT INTEGER:= 0;
 DECLARE LV_COUNTER INTEGER:= 1;
 十进制LV_BP_NUM NVARCHAR(10):='';
 十进制LV_BP_ID NVARCHAR(10):='';
 DECLARE LV_MVI_DT DATE;
 DECLARE LV_MVO_DT DATE;


 从XXXX.TMP_BP_CONT_GAP_RANGE2中为select business_partner_id,min_mvi_dt,max_mvo_dt声明光标cursor1
 通过business_partner_id,max_mvo_dt desc排序;

 创建本地临时列表XXXX。#TMP_CONTRACT_AGE2(
 BUSINESS_PARTNER_ID NVARCHAR(10),
 START_DT DATE,
 ROW_NUM个整数
 );
 从XXXX.SELECT计数(*)到LV_COUNT.TMP_BP_CONT_GAP_RANGE2;


 OPEN cursor1;
 将cursor1提取到LV_BP_ID,LV_MVI_DT,LV_MVO_DT中;
 如果不是cursor1 :: NOTFOUND DO
 IF:LV_BP_ID!=:LV_BP_NUM
 然后
 如果cursor1 :: ROWCOUNT!= 1
 然后
 插入XXXX。#TMP_CONTRACT_AGE2值(:LV_BP_NUM,:LV_MIN_MVI_DT,cursor1 :: ROWCOUNT);
 万一;
 LV_BP_NUM:=:LV_BP_ID;
 LV_MIN_MVI_DT:=:LV_MVI_DT;
 其他
 如果:LV_MVI_DT <:LV_MIN_MVI_DT和LV_MVO_DT> = add_days(:LV_MIN_MVI_DT,-30)
 然后
 LV_MIN_MVI_DT:=:LV_MVI_DT;
 万一;
 万一;
 如果cursor1 :: ROWCOUNT =:LV_COUNT
 然后
 插入XXXX。#TMP_CONTRACT_AGE2值(:LV_BP_NUM,:LV_MIN_MVI_DT,cursor1 :: ROWCOUNT);
 万一;
 将cursor1提取到LV_BP_ID,LV_MVI_DT,LV_MVO_DT中;
 结束时;
 关闭cursor1;
 结束;
 

一周热门 更多>