Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Databricks Runtime 16.3 e versioni successive
Recuperare informazioni su una condizione gestita in un gestore eccezioni.
Questa istruzione può essere usata solo all'interno di un gestore di condizioni in un'istruzione composta .
Sintassi
GET DIAGNOSTICS CONDITION 1
{ variable_name = condition_info_item } [, ...]
condition_info_item
{ MESSAGE_TEXT |
RETURNED_SQLSTATE |
MESSAGE_ARGUMENTS |
CONDITION_IDENTIFIER |
LINE_NUMBER }
Parametri
-
Variabile locale o variabile di sessione.
CONDITION 1Restituisce la condizione che ha attivato il gestore della condizione. È necessario chiamare la segnalazione
GET DIAGNOSTICS CONDITION 1come prima istruzione nel gestore.MESSAGE_TEXTRestituisce il testo del messaggio associato alla condizione come
STRING.variable_namedeve essere unSTRING.RETURNED_SQLSTATERestituisce il
SQLSTATEassociato alla condizione gestita comeSTRING.variable_namedeve essere unSTRING.MESSAGE_ARGUMENTSRestituisce un mapping
MAP<STRING, STRING>fornito come argomenti ai parametri delle condizioni di Databricks. Per le condizioni dichiarate, l'unica chiave della mappa èMESSAGE_TEXT.variable_namedeve essere unMAP<STRING, STRING>CONDITION_IDENTIFIERRestituisce il nome della condizione che ha causato l'eccezione.
variable_namedeve essere unSTRING.LINE_NUMBERRestituisce il numero di riga dell'istruzione che genera la condizione.
NULLse non disponibile.
Esempi
-- 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