如何将 Java 的 collection/array 数据传递给过程调用?韩亚

How can I pass from Java a collection/array of data to procedure call? HANA

假设我有一个 ID 列表:111、112、113,我使用 Java:

执行以下查询获取的
SELECT "id" FROM User WHERE (email, name) IN (("", ""), ("", ""));

列表长度会有所不同。

从 Java 我需要将这个 list/collection/array ID 传递给存储过程。我该怎么做?

CREATE PROCEDURE "PROCEDUREEXAMPLE" (IN userIds ??COLLECTION??) LANGUAGE SQLSCRIPT SQL SECURITY DEFINER
AS
BEGIN
    //Do the rest
END

我想使用另一个过程将第一个查询的结果传递给另一个过程,但如您所见,第一个 sql 是动态的,值会有所不同。

一种方法是将这些 ID 存储在临时 table 中,过程调用将访问它们,但我想知道是否可以将数据集合传递给过程调用。

欢迎提出其他实现方法。 谢谢

这个问题之前已经在这里被问过和回答过好几次了。 不,不可能将 java 集合或 java 值数组传递到 SAP HANA SQL 语句并获得相应的 IN LIST.

也没有 java 数组到 SAP HANA SQL 数组的映射。

为了解决这个问题,有两种主要方法可用:

  1. 自己根据集合元素创建IN-LIST。由于元素数量的变化,这当然会导致准备好的语句重用问题。处理这个问题的一种方法是准备一个包含更多元素的语句,并且只绑定那些你在 collection/array.
  2. 中获得元素的语句
  3. 创建一个临时的 table,用集合的元素填充它,一个元素 = 一行并使用 INNER JOIN 基于这组元素进行过滤。