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

编写Snowflake存储过程遇语法错误:unexpected '='(第12行)

Snowflake存储过程语法错误修复:unexpected '='

问题原因

Snowflake的SQL存储过程中,变量赋值必须使用SET关键字,不能直接用=运算符,这就是你第12行报错的核心原因。

修改后的完整代码

CREATE OR REPLACE PROCEDURE my_proc()
RETURNS STRING
LANGUAGE SQL
AS 
$$

-- Declare variables
DECLARE 
        demo_latest TIMESTAMP_LTZ;
        demo_current TIMESTAMP_LTZ;
        demo_difference INT;
        demo_current_week DATE;

-- Set variables
BEGIN
    SET demo_latest = (SELECT MAX(begin_date_time) FROM demo_original_transactions_dateshift);
    SET demo_current = CURRENT_TIMESTAMP();
    SET demo_current_week = DATEADD(DAY, -DAYOFWEEKISO(CURRENT_DATE) + 1, CURRENT_DATE);
    SET demo_difference = DATEDIFF('DAY', demo_latest, demo_current_week); 
    

-- Update statements with date shifting

    --create or replace table demo_original_transactions_dateshift AS (select * from demo_original_transactions);

    UPDATE demo_original_transactions_dateshift
        SET begin_date_time = DATEADD(DAY, demo_difference, begin_date_time),
            end_date_time = DATEADD(DAY, demo_difference, end_date_time); -- 补充分号结束语句

    RETURN '数据更新完成'; -- 添加返回值,匹配RETURNS STRING的定义
END;
$$
;

额外修复说明

  • 所有变量赋值语句前必须添加SET关键字,这是Snowflake SQL存储过程的强制语法规范。
  • UPDATE语句末尾需要加分号,否则会触发后续语法错误。
  • 存储过程声明了RETURNS STRING,因此必须在END前添加RETURN语句返回字符串,否则执行时会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:27:38