在SAP Hana查询中使用PLACEHOLDER与使用WHERE之间的差异

问题描述 投票:0回答:1

[有人可以向我解释一下,在SAP HANA查询中使用PLACEHOLDERWHERE之间的区别。我是SAP HANA的新手,在springboot应用程序中,我必须使用一个PLACEHOLDER查询来从计算视图中获取一些数据。问题是,当将spring数据jpa与SAP HANA一起使用时,由于某种原因,PLACEHOLDER查询无法在查询创建期间动态替换值。例如查询:

select * from SOME_TABLE ('PLACEHOLDER' = ('$$IP_SOME_COLUMN1$$', 'value1') ,('$$IP_SOME_COLUMN2$$', 'value2'));

[每当我们尝试将值动态传递给此查询时,由于某种原因,查询创建都会失败。因此,我们希望改用大家都很熟悉的WHERE子句,但需要澄清它们之间的区别以及它可能如何影响性能。

java spring-boot sap hana
1个回答
0
投票

与HANA中的WHERE子句占位符不同,它是非标准/专有语法扩展名。这个想法是查询可以向视图提供其他信息-通常是过滤条件,否则将无法在处理过程中“下推”。

这些概念在它们的用例中重叠,但是在实现和意义上完全不同。

关于“动态传递值”问题:旧的占位符语法不支持SQL查询参数/主机变量替换(查询文本中的?)。为此,您需要使用参数语法的新变体。

另请参见How to escape sql injection from HANA placeholder

© www.soinside.com 2019 - 2024. All rights reserved.