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

Snowflake游标执行报错:无效标识符RECORD.TABLE_NAME

解决Snowflake存储过程中引用游标变量报错的问题

问题分析

你遇到的报错是因为在Snowflake存储过程的SQL语句中,直接引用游标循环变量record.table_name的方式不符合语法要求。Snowflake规定,在SQL语句内部访问PL/SQL变量时,必须在变量名前添加冒号(:)前缀,否则系统会将其当作普通SQL标识符,进而因找不到对应对象报错。

修正后的完整代码

DROP TABLE IF EXISTS table_names;

CREATE TEMPORARY TABLE table_names (tname TEXT);

DECLARE
c1 CURSOR FOR SELECT table_name 
              FROM information_schema.tables 
              WHERE table_schema = current_schema() 
              AND table_type = 'BASE TABLE' 
              ORDER BY table_name;

BEGIN
    FOR record IN c1 DO
        INSERT INTO table_names 
           SELECT GET_DDL('TABLE', :record.table_name , true);
    END FOR;
END;

关键修改说明

  • 仅需将GET_DDL函数中的record.table_name改为:record.table_name,通过添加冒号明确标识这是一个PL/SQL变量,而非SQL对象,即可解决标识符无效的报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:27:04