小编Shu*_*hmi的帖子

SAP HANA 存储过程中的动态 SQL

我想在 HANA 中创建一个存储过程,它执行以下操作:

  • 接受表类型的 IN 参数。
  • 接受另一个 varchar 类型的 IN 参数。
  • 根据第一个输入参数的列值从现有表中过滤一些行。
  • 尝试根据第二个输入参数给出的条件对 (ORDER BY) 行进行排序。

这是我要创建的存储过程

CREATE PROCEDURE DEMO_PROD_EXAMPLE_DYNAMIC(IN TEMPLIST PRODLISTTYPE,IN ORDERSTRING VARCHAR(200))
AS
BEGIN
OUTVAR = SELECT * FROM DEMO_PRODS WHERE NAME IN (SELECT NAME FROM :TEMPLIST);

SELECT * FROM :OUTVAR ORDER BY :ORDERSTRING DESC;

END;
Run Code Online (Sandbox Code Playgroud)

我面临以下障碍:

  • 在上述过程中,根本不会发生排序!如果我对列名进行硬编码,例如 SELECT * FROM :OUTVAR ORDER BY ID DESC; 有用 。
  • 如果我尝试创建像 SELECT * FROM'|| 这样的动态 SQL 查询 :OUTVAR||' ORDER BY '||:ORDERSTRING||'DESC'; 我得到一个例外,即不允许将 varchar 和表类型与连接运算符一起使用。

如何根据 HANA 中的动态条件(列名/传递给过程)对结果集进行排序。

TIA

sap dynamic-sql hana

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

dynamic-sql ×1

hana ×1

sap ×1