【问题标题】:How to run a for loop for 0 to an output from a query in SAP HANA Sp12如何在 SAP HANA Sp12 中对 0 的查询的输出运行 for 循环
【发布时间】:2018-08-02 08:52:01
【问题描述】:

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

这是我的代码以及我遇到的错误:

错误:

无法执行 'ALTER PROCEDURE HADMIN.PROC_PH_CSR_CURR_STOCK() LANGUAGE SQLSCRIPT SQL SECURITY INVOKER DEFAULT ...' SAP DBTech JDBC:[1310]:标量类型不允许:V_CNT:第 138 行第 1 列(位置 4829)

代码:

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;

【问题讨论】:

    标签: hana


    【解决方案1】:

    在 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      相关资源
      最近更新 更多