我必须运行一个从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;
答案 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;