Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime 16.3 und höher
Abrufen von Informationen zu einer Bedingung, die in einem Ausnahmehandler behandelt wird.
Diese Anweisung darf nur innerhalb eines Bedingungshandlers in einer zusammengesetzten Anweisung verwendet werden.
Syntax
GET DIAGNOSTICS CONDITION 1
{ variable_name = condition_info_item } [, ...]
condition_info_item
{ MESSAGE_TEXT |
RETURNED_SQLSTATE |
MESSAGE_ARGUMENTS |
CONDITION_IDENTIFIER |
LINE_NUMBER }
Die Parameter
-
Eine lokale Variable oder Sitzungsvariable.
CONDITION 1Gibt die Bedingung zurück, die den Bedingungshandler ausgelöst hat. Sie müssen issue
GET DIAGNOSTICS CONDITION 1als erste Anweisung im Handler aufrufen.MESSAGE_TEXTGibt den Meldungstext, der der Bedingung zugeordnet ist, als zurück
STRING.variable_namemuss vom TypSTRINGsein.RETURNED_SQLSTATEGibt die zugehörige Bedingung zurück, die
SQLSTATEalsSTRING.variable_namemuss vom TypSTRINGsein.MESSAGE_ARGUMENTSGibt eine
MAP<STRING, STRING>Zuordnung zurück, die als Argumente für die Parameter von Databricks-Bedingungen bereitgestellt wird. Für deklarierte Bedingungen istMESSAGE_TEXTder einzige Zuordnungsschlüssel .variable_namemuss einMAP<STRING, STRING>CONDITION_IDENTIFIERGibt den Bedingungsnamen zurück, der die Ausnahme verursacht hat.
variable_namemuss vom TypSTRINGsein.LINE_NUMBERGibt die Zeilennummer der Anweisung zurück, die die Bedingung auslöst.
NULLfalls nicht verfügbar.
Beispiele
-- 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 = array_join(transform(map_entries(args), t -> concat_ws(' ', 'Param:', t.key, 'Val:', t.value)), ' ');
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