[有人可以向我解释一下,在SAP HANA查询中使用PLACEHOLDER
和WHERE
之间的区别。我是SAP HANA的新手,在springboot应用程序中,我必须使用一个PLACEHOLDER查询来从计算视图中获取一些数据。问题是,当将spring数据jpa与SAP HANA一起使用时,由于某种原因,PLACEHOLDER查询无法在查询创建期间动态替换值。例如查询:
select * from SOME_TABLE ('PLACEHOLDER' = ('$$IP_SOME_COLUMN1$$', 'value1') ,('$$IP_SOME_COLUMN2$$', 'value2'));
[每当我们尝试将值动态传递给此查询时,由于某种原因,查询创建都会失败。因此,我们希望改用大家都很熟悉的WHERE
子句,但需要澄清它们之间的区别以及它可能如何影响性能。
与HANA中的WHERE
子句占位符不同,它是非标准/专有语法扩展名。这个想法是查询可以向视图提供其他信息-通常是过滤条件,否则将无法在处理过程中“下推”。
这些概念在它们的用例中重叠,但是在实现和意义上完全不同。
关于“动态传递值”问题:旧的占位符语法不支持SQL查询参数/主机变量替换(查询文本中的?)。为此,您需要使用参数语法的新变体。