如何为查询的输出运行0的for循环(SAP HANA SP12)

2020-09-16 06:59发布

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

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


我必须运行一个从0到一个数字的for循环(这是我在表上执行count(*)得到的)。

这是我的代码以及出现的错误:

错误:

无法执行'ALTER PROCEDURE HADMIN.PROC_PH_CSR_CURR_STOCK()语言SQLSCRIPT SQL安全调用者默认...'SAP DBTech JDBC:[1310]:不允许使用标量类型:V_CNT:第138列第1列(位于pos 4829)

代码:

 v_cnt =从:t_rst;中选择count(*);

 截断表HADMIN.PH_SUM_CSR_CURR_STOCK;

 对于X IN 0 .. v_cnt DO
 如果:X <= v_cnt然后
             继续;
         ELSEIF:X> v_cnt然后
             打破;
         其他
             计数:=计数+ 2500000;
         万一;
     结束于;

 插入HADMIN.PH_SUM_CSR_CURR_STOCK
 选择* FROM:t_rst LIMIT 2500000 OFFSET:count;
 承诺;
 结束;
 

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

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


我必须运行一个从0到一个数字的for循环(这是我在表上执行count(*)得到的)。

这是我的代码以及出现的错误:

错误:

无法执行'ALTER PROCEDURE HADMIN.PROC_PH_CSR_CURR_STOCK()语言SQLSCRIPT SQL安全调用者默认...'SAP DBTech JDBC:[1310]:不允许使用标量类型:V_CNT:第138列第1列(位于pos 4829)

代码:

 v_cnt =从:t_rst;中选择count(*);

 截断表HADMIN.PH_SUM_CSR_CURR_STOCK;

 对于X IN 0 .. v_cnt DO
 如果:X <= v_cnt然后
             继续;
         ELSEIF:X> v_cnt然后
             打破;
         其他
             计数:=计数+ 2500000;
         万一;
     结束于;

 插入HADMIN.PH_SUM_CSR_CURR_STOCK
 选择* FROM:t_rst LIMIT 2500000 OFFSET:count;
 承诺;
 结束;
 
付费偷看设置
发送
2条回答
绿领巾童鞋
1楼 · 2020-09-16 07:36.采纳回答

声明

从:t_rst;中选择count(*); 

如您所写,它期望将表变量作为结果变量,而不是标量变量(如消息所示)。

您可以按照以下说明进行纠正:

从:t_rst;选择count(*)到v_cnt; 

如果使用的是HANA系统版本> = HANA 2.0 SPS0,则可以使用函数" record_count",并避免使用select来确定计数。 如下所示:

对于X IN 0 .. record_count(:t_rst)DO
 ...
 END FOR; 

关于,
弗洛里安

土豆飞人
2楼-- · 2020-09-16 07:51

你好弗洛里安

我纠正了语法,现在代码可以正常运行了,

从:t_rst选择count(*)到v_cnt;

 v_loop = v_cnt/2500000;

 FOR X in 0 .. v_loop DO

 插入HADMIN.PH_SUM_CSR_CURR_STOCK
 选择* FROM:t_rst LIMIT 2500000 OFFSET:count;
 承诺;
 计数:=计数+ 2500000;
 结束于;
 

一周热门 更多>