谁能给我解释一下《snowflake》中的SETLETDECLARE个变量有什么不同?我特别指的是编写存储过程.最佳实践是什么?

create or replace procedure my_stored_proc(run_date date)
returns varchar
language SQL
as
$$
DECLARE

    date1 date DEFAULT dateadd('day',-1,:run_date);

BEGIN

    let date2 date:= dateadd('day',-1,:run_date);

    set date3 = dateadd('day',-1,:run_date);

END

推荐答案

DECLARE表示在您想要使用变量之前,在SP的开头定义变量所用的代码块.

让我们在想要使用的地方定义一个变量.

SET用于定义会话变量,它不是SQL脚本块中的有效语法.

Sql相关问答推荐

如何在T—SQL中找到值更改之前的日期?

基于时间的SQL聚合

对于表A中的每一行,更新表B中与金额有关的行

BigQuery`喜欢ANY‘和`不喜欢ANY’

将主表与历史表连接以获取主表的当前汇率以及历史表中的上一个和最后一个汇率

每组显示一行(表1中的分组值),表2中的不同列表用逗号分隔

使用SQL创建列出两个时间戳之间小时数的列

如何在SQL Server中统计按备注分组的记录数

每个学校 Select N个最新的行,但跳过同一学生的重复行

确定小数中使用的精度位数

计算组内多个日期间隔go 年的累计天数

用户定义的标量值函数是否仍然会阻止并行性?

Clickhouse:左连接表到外部数组

SQL Server - 复杂场景 - 比较状态并填充值到后续行

如何从一张表中获取值在至少三行相同的记录

Postgres数据库维护:基于GROUP BY删除旧记录

使用 GROUP BY 时如何创建其他组?

将单行中的多个行值转换为列

BigQuery 错误:SELECT 列表表达式引用 esthetician.LICENSE_TYPE,它既未在 [49:8] 分组也未聚合

SQL Group By 然后映射出是否存在值