You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake从另一存储过程调用带ARRAY参数的存储过程绑定报错问题

问题根因

Snowflake的SQL执行器不支持直接将原生JavaScript数组作为绑定参数传入,会被识别为未定义的无效参数类型,因此触发报错。

修复方案

把JavaScript数组先序列化为JSON字符串作为绑定值传入,再在SQL语句中通过PARSE_JSON函数将字符串转换为Snowflake原生支持的ARRAY类型即可。

修复后完整代码

CREATE OR REPLACE PROCEDURE Test_DO_WITH_ARR(ARR ARRAY )
RETURNS VARIANT
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
    // 可正常操作传入的ARRAY参数,示例直接返回数组验证
    return ARR;
$$
;


CREATE OR REPLACE PROCEDURE Test_CALL_DO_WITH_ARR()
RETURNS VARIANT
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
    var Param_ARRAY =  ['Gabi','Klaus','Sabine'] ;
    // 修改点1:SQL中用PARSE_JSON处理绑定参数
    // 修改点2:绑定参数传入序列化后的JSON字符串
    var stmt = snowflake.execute({ 
        sqlText: "CALL Test_DO_WITH_ARR(PARSE_JSON(:1))", 
        binds: [JSON.stringify(Param_ARRAY)] 
    });
    stmt.next()
    return stmt.getColumnValue(1);
$$
;

CALL Test_CALL_DO_WITH_ARR() ;

执行上述代码后会正常返回传入的数组内容:["Gabi","Klaus","Sabine"]。


内容的提问来源于stack exchange,提问作者UMinky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:57:02