我们可以将list或array作为参数传递给雪花中的javascript过程吗?
我正在进行一个程序,该程序将每周运行一次,并从某些表中删除一周前的数据。我不想为单个表创建任务,而是想将表名作为列表/数组传递。
请引导。
提前感谢!
是的,您可以将数组传递到Snowflake JavaScript存储过程中。这是一个示例:
create or replace procedure test(ARR array)
returns string
language javascript
as
$$
var i;
var out = "";
// Remember to capitalize variables input to the stored procedure definition
for(i = 0; i < ARR.length; i++){
out += ARR[i];
if (i < ARR.length - 1) out += ", ";
}
return out;
$$;
call test(array_construct('TABLE_1', 'TABLE_2', 'TABLE_3'));
我为此挣扎了一段时间,并提出了一个很好的1行,使数组可以通过过程进行消化。
myArr = "array_construct('" + MyArr.join("', '") + "')"
然后可以将其插入任何类似的调用语句中
var sql_command = `call my_proc(${myArr});`
希望这能帮助其他偶然发现这一点的人!