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

无法执行代码块:Snowflake匿名块绑定变量语法错误求助

解决Snowflake存储过程中GET_OBJECT_REFERENCES的语法错误

问题描述

执行存储过程时触发编译错误:
SQL compilation error: syntax error line 1 at position 21 unexpected ':'

原错误代码:

execute immediate $$
declare
    TABLE_CATALOG varchar default ('DB');
    TABLE_SCHEMA varchar default ('SCH');
    VIEW_NAME varchar default ('VIEW');
    VEW resultset default (SELECT * from table(GET_OBJECT_REFERENCES(DATABASE_NAME =>:TABLE_CATALOG , SCHEMA_NAME =>:TABLE_SCHEMA, OBJECT_NAME =>:VIEW_NAME)));
 begin
return table(VEW);
end;
$$;

单独使用硬编码参数调用GET_OBJECT_REFERENCES可正常运行:

SELECT * from table(GET_OBJECT_REFERENCES(DATABASE_NAME =>'DB' , SCHEMA_NAME =>'SCH', OBJECT_NAME =>'VIEW'))

修正方案

存储过程内部引用本地变量时,无需使用:变量名的外部绑定语法,直接使用变量名即可。修正后的代码如下:

execute immediate $$
declare
    TABLE_CATALOG varchar default ('DB');
    TABLE_SCHEMA varchar default ('SCH');
    VIEW_NAME varchar default ('VIEW');
    VEW resultset default (SELECT * from table(GET_OBJECT_REFERENCES(DATABASE_NAME => TABLE_CATALOG, SCHEMA_NAME => TABLE_SCHEMA, OBJECT_NAME => VIEW_NAME)));
begin
    return table(VEW);
end;
$$;

错误原因

Snowflake中,:变量名语法仅用于外部绑定变量(如客户端传递的参数)。在存储过程内部声明的本地变量,在静态SQL语句中直接引用变量名即可,添加冒号会被解析为无效语法,触发编译错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:35:20