如何在SAP HANA Sp12中为查询的输出运行0的for循环

时间:2018-07-12 06:58:53

标签: hana

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

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

错误:

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

代码:

v_cnt = select count(*) from :t_rst;

truncate table HADMIN.PH_SUM_CSR_CURR_STOCK;

FOR X IN 0 .. v_cnt DO
IF :X <= v_cnt THEN
            CONTINUE;
        ELSEIF :X > v_cnt THEN
            BREAK;
        ELSE
            count := count + 2500000;         
        END IF;
    END FOR;

INSERT INTO HADMIN.PH_SUM_CSR_CURR_STOCK
SELECT * FROM :t_rst LIMIT 2500000 OFFSET :count;
COMMIT;
END;

1 个答案:

答案 0 :(得分:0)

在SAP HANA SQLScript中访问变量值时,需要使用冒号:前缀。 另外,要将count(*)中的单个变量分配给变量,您需要使用SELECT ... INTO
var_name = SELECT ...声明并分配一个表变量,该表变量可以包含元组,而不是标量(在这种情况下,这是您想要的)。

select count(*) into v_cnt from :t_rst;

truncate table HADMIN.PH_SUM_CSR_CURR_STOCK;

FOR X IN 0 .. :v_cnt DO
IF :X <= :v_cnt THEN
            CONTINUE;
        ELSEIF :X > :v_cnt THEN
            BREAK;
        ELSE
            count := :count + 2500000;         
        END IF;
    END FOR;

INSERT INTO HADMIN.PH_SUM_CSR_CURR_STOCK
    SELECT * FROM :t_rst LIMIT 2500000 OFFSET :count;
COMMIT;
END;