如果一直忙于寻找使用 ARRAY 变量来定义 a 内容的解决方案
WHERE [...] IN()
HANA SQL 中的语句。当我
UNNEST()
数组时它起作用;所有其他方法都失败了。
我试图理解为什么。非常感谢任何帮助。
这行不通
CREATE PROCEDURE UPDATE_TABLE()
AS
BEGIN
-- Define default filter values
DECLARE variable1 NVARCHAR(255) ARRAY = ARRAY('default_value1','default_value2');
-- Update the specified columns for matching rows
UPDATE TABLE
SET
COLUMN = '1'
WHERE
COLUMN IN (:variable1);
END;
这确实有效
CREATE PROCEDURE UPDATE_TABLE()
AS
BEGIN
-- Define default filter values
DECLARE variable1 NVARCHAR(255) ARRAY = ARRAY('default_value1','default_value2');
-- Create table for ARRAY variable(s)
variable1_table = UNNEST(:variable1) AS ("VAR1");
-- Update the specified columns for matching rows
UPDATE TABLE
SET
COLUMN = '1'
WHERE
COLUMN IN (SELECT "VAR1" FROM :variable1_table);
END;
我试图理解其中的原因。非常感谢任何帮助。
在第一个示例中,您直接在
variable1
语句中使用数组变量 IN()
。这不起作用,因为 WHERE
子句中不允许使用数组。
在第二个示例中,您使用
UNNEST()
函数将数组变量 variable1
转换为表。然后使用 SELECT
语句从表中选择 VAR1
列并将其传递给 IN(
) 语句。它的工作原理是 IN()
运算符现在正在接收标量值列表。