NULL (Snowflake Scripting)

NULL 可以用作“no-op”(无操作)语句。

备注

使用 NULL 作为语句并不常见。NULL 通常用作 ,而不是 语句

作为值,NULL 表示“没有值”。有关更多信息,请参阅 关于 SQL NULL 的维基百科文章 (link removed)。

使用 半结构化数据类型 (如 JSON)时,可能需要 区分作为 SQL 值的 NULL 和作为 JSON 值的 NULL (也称为“变体 NULL”)

备注

Snowflake Scripting 结构仅在 Snowflake Scripting 区块 内有效。

语法

NULL;
Copy

使用说明

  • NULL 语句只能在 Snowflake Scripting 中执行。

  • 如果没有更高级别的处理程序,异常处理程序中的 NULL 语句可以确保代码继续执行而不是中止。

  • 分支中的 NULL 语句不执行任何操作;但是,向读者传达了代码作者明确考虑了分支将执行的条件。换句话说,NULL 表明分支条件没有被忽略或意外忽略。

  • 在使用 NULL 语句之前,请考虑替代方法。

    例如,假设正在编写具有异常处理程序的存储过程。在大多数存储过程中,如果每个非异常代码路径都应返回一个值,则涉及异常处理程序的每个代码路径也应返回一个值。在这种情况下,请避免执行 NULL 语句。相反,请考虑显式返回 NULL、空结果集或错误指示器。

示例

以下代码在异常处理程序中使用 NULL 语句来确保异常被捕获(而不是传递给调用方),但不执行具体操作:

CREATE PROCEDURE null_as_statement()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
BEGIN
    SELECT 1 / 0;
    RETURN 'If you see this, the exception was not thrown/caught properly.';
EXCEPTION
    WHEN OTHER THEN
        NULL;
END;
$$
;
Copy
CALL null_as_statement();
+-------------------+
| NULL_AS_STATEMENT |
|-------------------|
|              NULL |
+-------------------+
Copy

备注

CALL 语句返回的 NULL 值不是由异常中的 NULL 语句直接导致的;相反,返回值为 NULL,因为存储过程没有执行显式 RETURN 语句。

Snowflake 建议存储过程显式返回一个值,包括在异常处理程序的每个分支中。

语言: 中文