SIGNAL 语句

适用于:打勾标记 Databricks Runtime 16.3 及更高版本

重要

此功能目前以公共预览版提供。

引发条件。

此语句只能在 复合语句中使用。

注意:Databricks 建议使用 RESIGNAL 从处理程序内部引发条件。 RESIGNAL 在 SQL Standard 中生成诊断堆栈,同时 SIGNAL 清除堆栈。 在处理程序中使用 RESIGNAL 可以保持对诊断堆栈的未来利用可能性。

语法

SIGNAL { condition_name
         [ SET { MESSAGE_ARGUMENTS = argument_map |
                 MESSAGE_TEXT = message_str } ] |
         SQLSTATE [VALUE] sqlstate [ SET MESSAGE_TEXT = message_str ] }

参数

  • condition_name

    本地定义的条件或系统定义的错误条件的名称。

  • argument_map

    (可选)是一个 MAP<STRING, STRING> 字面量,用于将值分配给系统定义的参数化条件消息。

  • message_str

    (可选)为引发的 STRING 或用户定义的条件提供消息字符串的 SQLSTATE 文本。

  • sqlstate

    长度为 5 的 STRING 文本。 如果已指定,则用指定的 USER_RAISED_EXCEPTION 引发 SQLSTATE

例子

> DECLARE input INT DEFAULT 5;

> BEGIN
    DECLARE arg_map MAP<STRING, STRING>;
    IF input > 4 THEN
      SET arg_map = map('errorMessage',
                        'Input must be <= 4.');
      SIGNAL USER_RAISED_EXCEPTION
        SET MESSAGE_ARGUMENTS = arg_map;
    END IF;
  END;