2020-09-26 07:24发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我必须使用游标以一定... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我必须使用游标以一定顺序遍历所有行。 但是,在我按顺序实施它之后,结果却不符合预期。 我用:: rowcount记录了结果,并注意到按的顺序并没有真正起作用。
我尝试在数据集中生成行号,然后按行号循环遍历各行,它将以这种方式工作。 但是它比游标花费的时间长得多。
您知道HANA是否真的支持通过光标使用order by?
我都尝试过这两个。这是使用提取的方法。
开始 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; 结束;
最多设置5个标签!
我都尝试过这两个。这是使用提取的方法。
一周热门 更多>