Snowflake中IF语句的条件部分是否可省略括号?
Snowflake Scripting中IF语句括号的使用规则
在Snowflake Scripting里,IF ( <condition> ) THEN和IF <condition> THEN这两种格式都是合法有效的,你可以根据个人习惯任选其一使用,两种写法都能被Snowflake正常解析执行。
比如你提供的代码示例中使用的是无括号的写法:
IF :DATE_FROM IS NULL THEN CASE period_value WHEN 'daily' THEN calculated_date_from := DATEADD(DAY, -1, CURRENT_DATE()); calculated_date_to := calculated_date_from; WHEN 'weekly' THEN calculated_date_from := DATEADD(WEEK, -1, TRUNC(CURRENT_DATE(), 'WEEK')); calculated_date_to := DATEADD(DAY, 6, calculated_date_from); WHEN 'monthly' THEN calculated_date_from := DATEADD(MONTH, -1, TRUNC(CURRENT_DATE(), 'MONTH')); calculated_date_to := LAST_DAY(calculated_date_from); ELSE RAISE EXCEPTION 'Unsupported periodicity: %', period_row.period_value; END CASE; ELSE calculated_date_from := :DATE_FROM; calculated_date_to := :DATE_TO; END IF;
将其修改为带括号的写法也完全可行:
IF (:DATE_FROM IS NULL) THEN CASE period_value WHEN 'daily' THEN calculated_date_from := DATEADD(DAY, -1, CURRENT_DATE()); calculated_date_to := calculated_date_from; WHEN 'weekly' THEN calculated_date_from := DATEADD(WEEK, -1, TRUNC(CURRENT_DATE(), 'WEEK')); calculated_date_to := DATEADD(DAY, 6, calculated_date_from); WHEN 'monthly' THEN calculated_date_from := DATEADD(MONTH, -1, TRUNC(CURRENT_DATE(), 'MONTH')); calculated_date_to := LAST_DAY(calculated_date_from); ELSE RAISE EXCEPTION 'Unsupported periodicity: %', period_row.period_value; END CASE; ELSE calculated_date_from := :DATE_FROM; calculated_date_to := :DATE_TO; END IF;
这两种写法在语法上没有功能区别,官方文档虽未特意明确提及,但实际使用中两种格式均被Snowflake支持。
内容的提问来源于stack exchange,提问作者Excorpion
相关产品推荐
相关产品推荐

