Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо: Databricks Runtime 16.3 и позднее
Важный
Эта функция доступна в общедоступной предварительной версии.
Получение сведений об условии, обработанном в обработчике исключений.
Эта инструкция может использоваться только в обработчике условий в составе составной инструкции .
Синтаксис
GET DIAGNOSTICS CONDITION 1
{ variable_name = condition_info_item } [, ...]
condition_info_item
{ MESSAGE_TEXT |
RETURNED_SQLSTATE |
MESSAGE_ARGUMENTS |
CONDITION_IDENTIFIER |
LINE_NUMBER }
Параметры
-
Локальная переменная или переменная сеанса.
CONDITION 1
Возвращает условие, активировающее обработчик условий. Необходимо вызвать
GET DIAGNOSTICS CONDITION 1
как первую инструкцию в программе обработчика.MESSAGE_TEXT
Возвращает текст сообщения, связанный с условием в виде
STRING
.variable_name
должен бытьSTRING
.RETURNED_SQLSTATE
Возвращает
SQLSTATE
, связанную с условием, которое обрабатывается какSTRING
.variable_name
должен бытьSTRING
.MESSAGE_ARGUMENTS
Возвращает сопоставление
MAP<STRING, STRING>
, предоставленное в качестве аргументов для параметров условий Databricks. Для объявленных условий единственным ключом карты являетсяMESSAGE_TEXT
.variable_name
должен бытьMAP<STRING, STRING>
CONDITION_IDENTIFIER
Возвращает имя условия, вызвавшее исключение.
variable_name
должен бытьSTRING
.LINE_NUMBER
Возвращает номер строки инструкции, которая вызывает условие.
NULL
, если недоступен.
Примеры
-- Retrieve the number of rows inserted by an INSERT statement
> CREATE OR REPLACE TABLE emp(name STRING, salary DECIMAL(10, 2));
> 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;
VALUES (log);
END;
SELECT 10/0;
END;
Condition: DIVIDE_BY_ZERO Message: Division by zero. Use try_divide to tolerate divisor being 0 and return NULL instead. If necessary, set <config> to “false” to bypass this error. SQLATTE: 22012 Args: Parm: config Val: ANSI_MODE Line: 28
Связанные статьи
- скрипты SQL
- инструкция CASE
- составное выражение
- инструкции FOR