如何在sap hana中使用动态sql中的表变量?

dxpyg8gm  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(636)

在一个过程中,我使用一个表变量来存储来自表a的一些结果。
我必须在动态sql中使用这个表变量。
(例如)

Call Procedure A()

Begin

VAR_TAB = select customer_id from table_A;

EXEC ' select * from'||: var_tab;

End;

上面的代码将抛出错误。有人能解决这个问题吗?

i34xakig

i34xakig1#

取决于您的用例:
可以像使用临时表一样使用表变量,也可以不使用动态sql:

CREATE PROCEDURE c AS 
BEGIN
    var_tab = SELECT customer_id FROM table_A ;
    select * from :var_tab;
END;

如果结果包含实际的表名,则必须使用动态sql,并且可以以数组形式访问表变量值:

CREATE PROCEDURE b AS 
BEGIN
    var_tab = SELECT customer_id FROM table_A ;
    EXECUTE IMMEDIATE ' select * from '||:var_tab.customer_id[1];
END;

或使用标量变量:

CREATE PROCEDURE a AS 
BEGIN
    DECLARE var_tab nvarchar(20);
    SELECT customer_id INTO var_tab FROM table_A ;
    EXECUTE IMMEDIATE ' select * from '||var_tab;
END;

相关问题