如何在雪花工作表中定义数组变量?
set columns = (SELECT array_agg(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS
where table_name='MEMBERS');
我收到此错误:
<块引用>不支持的功能“从非常量源表达式赋值”。
答案 0 :(得分:0)
似乎不可能:
SELECT TO_ARRAY('');
-- [""]
SET a = (SELECT TO_ARRAY(''));
-- Unsupported feature 'assignment from non-constant source expression'.
使用 SETVARIABLE
:
SELECT SETVARIABLE('a', (SELECT TO_ARRAY('')));
<块引用>
SQL 编译错误:第 7 行的错误行 1 函数 'SETVARIABLE' 的参数类型无效:(VARCHAR(1), ARRAY)
答案 1 :(得分:0)
不是存储数组,而是聚合在逗号分隔的字符串中:
set x = (SELECT listagg(COLUMN_NAME, ',') FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'TABLE_S%');
但是:根据 https://docs.snowflake.com/en/sql-reference/session-variables.html,“字符串或二进制变量的大小限制为 256 字节”。
这意味着即使您可以将数组存储在变量中,它也可能会超出限制。而是将结果存储在 [temp] 表中。