Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:
Databricks SQL
Databricks Runtime 16.3 e versioni successive
Implementa un blocco di script SQL che può contenere una sequenza di istruzioni SQL, istruzioni control-of-flow, dichiarazioni di variabili locali e gestori di eccezioni.
Nota
Quando si richiama un'istruzione composta da un notebook, questa deve essere l'unica istruzione nella cella.
Sintassi
[ label : ]
BEGIN
[ { declare_variable | declare_condition } ; [...] ]
[ declare_cursor ; [...] ]
[ declare_handler ; [...] ]
[ SQL_statement ; [...] ]
END [ label ]
declare_variable
DECLARE variable_name [, ...] datatype [ DEFAULT default_expr ]
declare_condition
DECLARE condition_name CONDITION [ FOR SQLSTATE [ VALUE ] sqlstate ]
declare_cursor
DECLARE cursor_name [ ASENSITIVE | INSENSITIVE ] CURSOR FOR query [ FOR READ ONLY ]
declare_handler
DECLARE handler_type HANDLER FOR condition_values handler_action
handler_type
EXIT | CONTINUE
condition_values
{ { SQLSTATE [ VALUE ] sqlstate | condition_name } [, ...] |
{ SQLEXCEPTION | NOT FOUND } [, ...] }
Prima di Databricks Runtime 17.2 è possibile dichiarare una sola variabile alla volta.
Parametri
-
Un identificatore facoltativo viene usato per qualificare le variabili definite all'interno del composto e per lasciare il composto. Entrambe le occorrenze dell'etichetta devono corrispondere e l'etichetta
ENDpuò essere specificata solo se viene specificatolabel:.etichetta non deve essere specificata per un blocco di istruzioni composto di primo livello.
NOT ATOMICSpecifica che, se un'istruzione SQL all'interno del composto ha esito negativo, non verrà eseguito il rollback delle istruzioni SQL precedenti. Si tratta del comportamento predefinito e solo.
declare_variableDichiarazione di variabile locale per una o più variabili
-
Nome della variabile. Il nome non deve includere qualificatore e deve essere univoco all'interno del blocco di istruzioni.
data_typeQualsiasi tipo di dati supportato. Se data_type viene omesso, è necessario specificare DEFAULT e il tipo è derivato dal default_expression.
{ DEFAULT | = } default_expressionDefinisce il valore iniziale della variabile dopo la dichiarazione. default_expression deve poter essere convertito in data_type. Se non viene specificato alcun valore predefinito, la variabile viene inizializzata con NULL.
-
Declare_conditionDichiarazione di condizione locale
-
Il nome non qualificato della condizione è racchiuso all'interno dell'istruzione composta.
sqlstateValore letterale
STRINGdi 5 caratteri alfanumerici (senza distinzione tra maiuscole e minuscole) costituito da A-Z e 0..9. SQLSTATE non deve iniziare con '00', '01' o 'XX'. Qualsiasi SQLSTATE a partire da '02' verrà intercettato anche dall'eccezione PREDEFINITa NOT FOUND. Se non specificato, SQLSTATE è '45000'.
-
-
Si applica a:
Databricks Runtime 18.1 e versioni successiveDichiarazione di cursore locale per l'iterazione dei risultati della query.
Nota
Per
DECLARE CURSOR, vengono rilevati e generati solo errori di sintassi. La query non viene eseguita finché il cursore non viene aperto con OPEN.-
cursor_name: nome non qualificato per il cursore, univoco tra i cursori in questa istruzione composta. Quando si fa riferimento al cursore in OPEN, FETCH o CLOSE, è possibile qualificare il nome del cursore con l'etichetta di istruzione composta ( ad esempio
label.my_cursor) per disambiguare negli ambiti annidati. -
ASENSITIVE|INSENSITIVE: facoltativo. Una volta aperto il cursore, il set di risultati non è interessato dalle modifiche DML. Si tratta del comportamento predefinito e supportato solo. - query: query che definisce il cursore; viene eseguito quando il cursore viene aperto con OPEN.
-
cursor_name: nome non qualificato per il cursore, univoco tra i cursori in questa istruzione composta. Quando si fa riferimento al cursore in OPEN, FETCH o CLOSE, è possibile qualificare il nome del cursore con l'etichetta di istruzione composta ( ad esempio
declare_handlerDichiarazione per un gestore di errori.
handler_typeEXITClassifica il tipo di gestore per uscire dall'istruzione composta dopo che la condizione è stata gestita. Tutti i cursori aperti all'interno dell'istruzione composta e le istruzioni composte annidate vengono chiusi in modo implicito.
CONTINUESi applica a:
Databricks Runtime 18.1 e versioni successiveClassifica il gestore per continuare l'esecuzione al termine del gestore. L'esecuzione riprende con l'istruzione che segue quella che ha generato la condizione.
condition_valuesSpecifica a quali sqlstate o condizioni si applica il gestore. I valori delle condizioni devono essere univoci tra tutti i gestori dell'istruzione composta. I valori di condizione specifici hanno la precedenza su
SQLEXCEPTION.sqlstateValore letterale
STRINGdi 5 caratteri'A'-'Z'e'0'-'9'(senza distinzione di maiuscole e minuscole).-
Condizione definita all'interno di questo composto, un'istruzione composta esterna o una classe di errore definita dal sistema.
SQLEXCEPTIONSi applica a qualsiasi condizione di errore rivolta all'utente.
NOT FOUNDSi applica a qualsiasi condizione di errore con una classe SQLSTATE '02', inclusa la condizione di CURSOR_NO_MORE_ROWS (SQLSTATE
'02000') generata durante il recupero oltre la fine di un set di risultati del cursore.handler_actionIstruzione SQL da eseguire quando si verifica uno dei valori della condizione. Per aggiungere più istruzioni, usare un'istruzione composta annidata.
SQL_statementIstruzione SQL, ad esempio un'istruzione DDL, DML, un'istruzione control o un'istruzione composta. Qualsiasi istruzione
SELECToVALUESproduce un set di risultati che il invoker può utilizzare.
Esempi
-- A compound statement with local variables, and exit hanlder and a nested compound.
> BEGIN
DECLARE a INT DEFAULT 1;
DECLARE b INT DEFAULT 5;
DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
div0: BEGIN
VALUES (15);
END div0;
SET a = 10;
SET a = b / 0;
VALUES (a);
END;
15