Snowflake cloud data platform 在Snowflake中,为什么在同时分配两个变量时,变量上有256字节的限制?

Snowflake cloud data platform 在Snowflake中,为什么在同时分配两个变量时,变量上有256字节的限制?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我正在使用Snowflake,试图将两个变量同时设置为一个包含两个字段的结果集,但它并没有按照我的想法工作。下面是一个例子: 当我运行此命令时: set (var1, var2) = (select 'IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII',''); 我得到以下错误: Assignment to 'VAR1' not done because value exceeds size limit

我正在使用Snowflake,试图将两个变量同时设置为一个包含两个字段的结果集,但它并没有按照我的想法工作。下面是一个例子:

当我运行此命令时:

set (var1, var2) = (select 'IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII','');
我得到以下错误:

Assignment to 'VAR1' not done because value exceeds size limit for variables. Its size is 280; the limit is 256 (internal storage size in bytes).
但是,在相同的字符数下,此操作非常有效:

set (var1) = (select 'IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII');
似乎在分配两个变量时,其中一个字段的字符串长度只能是256字节。使用4字节字符时,我上面的70个字符的字符串是280个字符,超出了256个字符的限制


我认为这可能与变量集合的存储在一个数组或元组数据类型(不支持超过256字节)中的方式有关?但是我很难通过文档来确认这一点。

事实上,SET操作符的文档中已经说明了:

使用说明

该命令支持在中设置多个变量 同样的说法

如果命令执行复杂表达式,则可能需要 正在会话中运行虚拟仓库

表达式的数量必须与要添加的变量的数量相匹配 初始化

>字符串或二进制变量的大小限制为256字节

SQL变量的标识符(即名称)限制为256 人物

变量名(如CURRENT或PUBLIC)保留供将来使用 由雪花和不能使用

然而,就您的示例而言,它似乎也可以通过在同一集合操作中进行两次选择来完成-如下所示:

set (var1, var2) = (
  (select ''),
  (select 'IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII----------IIIIIIIIII')
);

有趣的是,如果你把select从赋值中去掉,它会起作用:设置var1,var2='iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii,;是的,那真的很有趣!我没有注意到。不幸的是,我实际上试图解决的问题需要一个返回两个值的select语句: