如何从Java传递数据的集合/数组到过程调用? HANA

时间:2018-06-14 09:48:29

标签: hana

假设我有一个id列表:111,112,113,我使用Java执行以下查询:

SELECT "id" FROM User WHERE (email, name) IN (("", ""), ("", ""));

列表长度会有所不同。

从Java我需要将此列表/集合/数组ID传递给存储过程。我怎么能这样做?

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

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

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

随意建议其他方法。 感谢

1 个答案:

答案 0 :(得分:1)

这已经被问过&之前几次回答过这里。 不可以,不可能将java集合或java数组值传递到SAP HANA SQL语句中并获取相应的IN LIST

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

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

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