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

调用Snowflake存储过程传参时出现Invalid Identifier Error求助

Snowflake存储过程调用报错:invalid identifier 'D' 解决方法

问题根源

Snowflake的SQL存储过程中,CALL语句里引用本地变量时必须添加冒号(:)前缀。直接写变量名会被Snowflake当作数据库对象标识符(如表名、列名)解析,而非存储过程内的本地变量,这就触发了invalid identifier 'D'的编译错误。

修正后的代码示例

位置参数调用方式

BEGIN
LET D VARCHAR(128) := 'T1'; 
LET L VARCHAR(128) := '';
CALL Myproc(:D) INTO L; -- 本地变量前添加冒号
RETURN D||'-'||L;
END;

命名参数调用方式

BEGIN
LET D VARCHAR(128) := 'T1'; 
LET L VARCHAR(128) := '';
CALL Myproc(X => :D) INTO L; -- 本地变量前添加冒号
RETURN D||'-'||L;
END;

补充说明

使用常量'T1'调用时正常,是因为常量会被直接解析为字符串值,无需变量引用标识;而本地变量必须通过:变量名的形式明确告知Snowflake这是存储过程内部的本地变量,避免与数据库对象混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:52:05