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
Importante
Questa funzionalità si trova in anteprima pubblica.
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 1
Restituisce la condizione che ha attivato il gestore della condizione. È necessario chiamare la segnalazione
GET DIAGNOSTICS CONDITION 1
come prima istruzione nel gestore.MESSAGE_TEXT
Restituisce il testo del messaggio associato alla condizione come
STRING
.variable_name
deve essere unSTRING
.RETURNED_SQLSTATE
Restituisce il
SQLSTATE
associato alla condizione gestita comeSTRING
.variable_name
deve essere unSTRING
.MESSAGE_ARGUMENTS
Restituisce 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_name
deve essere unMAP<STRING, STRING>
CONDITION_IDENTIFIER
Restituisce il nome della condizione che ha causato l'eccezione.
variable_name
deve essere unSTRING
.LINE_NUMBER
Restituisce il numero di riga dell'istruzione che genera la condizione.
NULL
se 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 =
(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