编写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
相关产品推荐
相关产品推荐

