適用対象: Databricks SQL
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 スクリプト
- ケース文
- 複合ステートメント
- SIGNAL ステートメント
- FOR ステートメント
- IF ステートメント
- ITERATE ステートメント
- REPEAT ステートメント
- SIGNAL ステートメント
- エラー処理とエラー メッセージ