上下文函数¶
此系列函数允许收集有关执行语句的上下文的信息。这些函数在每个语句中最多计算一次。
本主题内容:
函数列表¶
子类别 |
函数 |
备注 |
---|---|---|
一般上下文 |
||
CURRENT_TIMESTAMP 的别名。 |
||
CURRENT_TIME 的别名。 |
||
CURRENT_TIMESTAMP 的别名。 |
||
会话上下文 |
||
返回账户定位器。 |
||
返回账户名称。 |
||
会话对象上下文 |
||
警报上下文 |
使用说明¶
上下文函数通常不需要实参。
为符合 ANSI 标准,在 SQL 语句中,可以在不带括号的情况下调用以下上下文函数:
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
LOCALTIME
LOCALTIMESTAMP
备注
如果要将 Snowflake Scripting 变量 设置为调用这些函数之一的表达式(例如,
my_var := <function_name>();
),则必须包含圆括号。
示例¶
显示会话的当前仓库、数据库和架构:
SELECT CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA();
+---------------------+--------------------+------------------+
| CURRENT_WAREHOUSE() | CURRENT_DATABASE() | CURRENT_SCHEMA() |
|---------------------+--------------------+------------------+
| MY_WAREHOUSE | MY_DB | PUBLIC |
|---------------------+--------------------+------------------+
显示当前日期、时间和时间戳(请注意,调用这些函数时不需要使用括号):
SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
+--------------+--------------+-------------------------------+
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
|--------------+--------------+-------------------------------|
| 2024-06-07 | 10:45:15 | 2024-06-07 10:45:15.064 -0700 |
+--------------+--------------+-------------------------------+
在 Snowflake Scripting 块中,调用不带括号的 CURRENT_DATE 函数以设置 SQL 语句中的变量:
EXECUTE IMMEDIATE
$$
DECLARE
currdate DATE;
BEGIN
SELECT CURRENT_DATE INTO currdate;
RETURN currdate;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07 |
+-----------------+
在 Snowflake Scripting 块中,尝试将变量设置为调用不带括号的 CURRENT_DATE 函数的表达式将导致错误:
EXECUTE IMMEDIATE
$$
DECLARE
today DATE;
BEGIN
today := CURRENT_DATE;
RETURN today;
END;
$$
;
000904 (42000): SQL compilation error: error line 5 at position 11
invalid identifier 'CURRENT_DATE'
同一个块返回调用函数时的当前日期,并带有括号:
EXECUTE IMMEDIATE
$$
DECLARE
today DATE;
BEGIN
today := CURRENT_DATE();
RETURN today;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07 |
+-----------------+