我知道我可以在存储过程中执行此操作。然而,每当我只是创建一个基本查询时,Snowflake 让我使用的只是“Set vParmeter1 =”; 命令这将我限制为 256 个字符,这是限制。我知道 varchar 可以达到 16mb,如 DECLARE vParameter VARCHAR(16777216); 中所示 我在我的程序中使用了这个。我不知道如何在脚本中使用它。我一直在尝试将有效的方法和“应该”有效的方法结合起来,但出于某种原因,Snowflake 喜欢重写如何执行 SQL 的书籍。下面我的代码错误和 VARCHAR(),如果您注释掉 Declare 它可以工作。被注释掉的第二组我看到其他人在使用,所以我尝试过,但它从未到达那里,所以我放弃了它。错误发生在 EOF 第 1 行,就在 varchar 大小的最后 6 处。
DECLARE vParameter1 VARCHAR(16777216);
SET vParameter1 = '700,145,138,159';
--SET vParameter1 := '700,145,138,159';
SELECT TO_NUMBER(table1.VALUE) AS Locations
FROM TABLE(SPLIT_to_table($vParameter1,',')) AS table1
以下是在我的机器上对我有用的最终答案,基于对已投票答案的帮助。
EXECUTE IMMEDIATE $$
DECLARE
vParameter1 VARCHAR(16777216) := '700,145,138,159';
res RESULTSET;
BEGIN
-- alternative to declare block
-- LET vParameter1 VARCHAR(16777216) := '700,145,138,159';
res := (
SELECT TO_NUMBER(table1.VALUE) AS Locations
FROM TABLE(SPLIT_to_table(:vParameter1,',')) AS table1
);
/* -- if no resultset is expected then simply:
INSERT INTO some_table(col)
SELECT TO_NUMBER(table1.VALUE) AS Locations
FROM TABLE(SPLIT_to_table(:vParameter1,',')) AS table1;
*/
RETURN TABLE(res);
END;
$$;
会话变量 (
SET
) != 块变量 (DECLARE/LET
)。会话变量的硬限制为 256 字节。使用块变量:
输出:
有关的:
返回
RESULTSET
在 SQL 语句中使用变量(绑定)
如何增加雪花中的可变大小限制?