如何在 SAP HANA DB 中使用具有多行的 table 变量?

How do I work with table variables with multiple rows in SAP HANA DB?

在 SQL 中,有时使用 table 变量更容易和更快。

我知道我不能在 HANA 数据库中使用 insert to table var,但是执行类似操作的最佳实践是什么?

我尝试使用 SELECT 来填充变量,但我无法插入乘法行。

我必须使用临时 table 吗?

我想要一个 table,其中包含我创建的一些值,例如下面我用于 SQL 的示例,这样我可以稍后在查询中使用它:

Declare @temp table(Group Int, Desc nvarchar(100))
    insert into @temp (Group , Desc )
        Values (1,'Desc 1'), (2,'Desc2 2'),  (3,'Desc 3'),  (4,'Desc 4'),  (5,'Desc 5')

在 HANA 中,我可以创建变量,但无法用多行填充它:(

有什么最好的方法吗?

非常感谢。

还有谁想找一下,我找了个"work around"就是用UNION ALL。

我添加第一行,然后在 table 上执行 UNION 并添加第二行,如下所示:

tempTable = Select 1 as "Group", 'Desc' as "Desc" FROM DUMMY;
tempTable = SELECT "Group", "Desc" FROM :AcctClassificacao UNION ALL Select 2 as "Group",
            'Desc' as "Desc" FROM DUMMY ;

Select * from tempTable

在这种情况下,我将得到结果:

Group   Desc
  1     Desc
  2     Desc

我不知道这是否是最好的方法。

"UNION" 方法是一种向 table 变量指向的数据添加记录的方法。

比这更好的是使用 arrays to add, remove, and modify data and finally turn the arrays into table variables via the UNNEST 函数。这是一个多年来一直可用的选项,即使是 HANA 1。

或者,SAP HANA 2(我相信从 SPS 03 开始​​)提供额外的 SQL脚本命令,直接 INSERTUPDATEDELETE在 table 个变量上。文档在 "Modifying the Content of Table Variables" 中对此进行了介绍。 请注意,此功能的 DML 命令语法略有不同。

从 SAP HANA 2 SPS 04 开始,还为此提供了另一个语法选项: “SQL DML Statements on Table Variables”。 最后,这个看起来像 "normal" SQL DML 针对 table 变量。

鉴于这些选项,"union" 方法是您应该在编码中使用的最后一个选项。