通过带有参数的 JDBC 从 SAP HANA 数据库中选择

Posted

技术标签:

【中文标题】通过带有参数的 JDBC 从 SAP HANA 数据库中选择【英文标题】:Select from SAP HANA Database via JDBC with Parameters 【发布时间】:2020-01-29 14:37:42 【问题描述】:

我在一个本地 SAP HANA 数据库上获得了一个查询视图,我想在该数据库上执行选择语句。

SELECT 语句由第三方 BI 工具发送,该工具使用 SAP HANA JDBC 驱动程序 (ngdbc.jar) 来执行对 HANA 数据库的访问。

查询需要两个输入参数:PARAMETER_A 和 PARAMETER_B

在本机 HANA 数据库上,语法如下所示(SAP HANA Studio):

select *
from "_SYS_BIC"."QUERY_VIEW" ('PLACEHOLDER' = ('$$PARAMETER_A$$', 'value_1'), 'PLACEHOLDER' = ('$$PARAMETER_B$$', 'value_2'))

当我尝试通过 JDBC 执行此查询时,出现以下语法错误:

不允许使用“=”号。

谁能告诉我使用 JDBC 的正确语法吗?

提前致谢

【问题讨论】:

能否请您发布您的 JAVA 代码,以便我们了解您如何构建发送给 HANA 的 SQL 字符串? 你好 Lars,没有 JAVA 代码。我们使用第三方 BI 工具。此工具允许使用 JDBC 驱动程序 (ngdbc.jar) 从 SAP HANA 数据源导入。因此,我们可以将我们的 select-SQL 语句发布到 BI 工具的导入向导中,并选择应该用于访问数据源的驱动程序。我尝试了我的第一篇文章中显示的选择语句,它在“SAP HANA Studio”中运行良好。但是当我在 BI-Tool(它使用 JDBC 访问 HANA 数据库)中使用此语句时,它会显示一个语法错误,指出不允许使用“=”... 因此,我怀疑 JDBC 驱动程序需要不同的参数规范?! 我无法证实您的怀疑。 SAP HANA Studio 实际上使用的 JDBC 驱动程序与您可以从客户端软件包下载和安装的驱动程序相同。在我看来,a) 您的 BI 工具尝试评估 SQL 语法本身并失败,因为 PLACEHOLDER... 语法非常特定于 HANA,或者 b) BI 工具在发送之前没有正确引用 SQL 字符串到 HANA。 顺便说一句:您在这里使用哪个第三方 BI 工具? 【参考方案1】:

正如 Lars 所说,HANA 使用与第三方工具相同的 JDBC 驱动程序,只是版本可以不同。要查看 JDBC 调用的样子,您可以在 HANA Studio 中打开跟踪日志,请参阅here

在您的日志中,您会看到如下内容:

com.sap.db.jdbc.HanaConnectionFinalize@37c52b05[ID:316971].prepareCall("SELECT top 10 ""VAR_SUM""
FROM ""_SYS_BIC"".""CV_TEST""('PLACEHOLDER' = ('$$IP_VAP_1$$', '5'), 'PLACEHOLDER' = ('$$IP_VAR_2$$', '3'))", 1003, 1007)

所以您应该为您的 BI 工具设置跟踪,并检查它执行 SELECT 语句和 HANA 工作室的方式之间的差异。 希望对你有帮助))

【讨论】:

以上是关于通过带有参数的 JDBC 从 SAP HANA 数据库中选择的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Rstudio Connect 连接 SAP Hana。 R 闪亮

如何从 SAP HANA Studio 在 SAP HANA Vora 虚拟表中插入数据?

使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库

[Step By Step]用信息设计工具IDT创建从SAP Business Object到SAP HANA的连接

SAP HANA中的SLT简介

.Net 连接器,用于带有 .Net Core 的 SAP HANA