Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо: Databricks Runtime 16.3 и более поздних версий
Важно
Эта функция доступна в общедоступной предварительной версии.
Повторно вызывает условие, обработанное обработчиком условий.
Эта инструкция может использоваться только в составной инструкции.
Синтаксис
RESIGNAL
Параметры
Нет
Примеры
> CREATE TABLE log(eventtime TIMESTAMP, log STRING);
> BEGIN
DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
BEGIN
DECLARE cond STRING;
DECLARE message STRING;
DECLARE state STRING;
DECLARE args MAP<STRING, STRING>;
DECLARE line BIGINT;
DECLARE argstr STRING;
DECLARE log STRING;
GET DIAGNOSTICS CONDITION 1
cond = CONDITION_IDENTIFIER,
message = MESSAGE_TEXT,
state = RETURNED_SQLSTATE,
args = MESSAGE_ARGUMENTS,
line = LINE_NUMBER;
SET argstr =
(SELECT aggregate(array_agg('Parm:' || key || ' Val: value '),
'', (acc, x)->(acc || ' ' || x))
FROM explode(args) AS args(key, val));
SET log = 'Condition: ' || cond ||
' Message: ' || message ||
' SQLSTATE: ' || state ||
' Args: ' || argstr ||
' Line: ' || line;
INSERT INTO log VALUES(current_timestamp(), log);
RESIGNAL;
END;
SELECT 10/0;
END;
[DIVIDE_BY_ZERO] Division by zero. Use try_divide to tolerate divisor being 0 and return NULL instead.
> SELECT * FROM log ORDER BY eventtime DESC LIMIT 1;
Condition: DIVIDE_BY_ZERO Message: Division by zero. Use try_divide to tolerate divisor being 0 and return NULL instead. SQLSTATE: 22012 Args: Line: 28
Связанные статьи
- SQL скрипты
- CASE инструкция
- Составное выражение
- инструкция SIGNAL
- инструкции FOR
- инструкции IF
- инструкции ITERATE
- инструкции REPEAT
- инструкция SIGNAL
- Обработка ошибок и сообщения об ошибках