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 Runtime 18.1 e versioni successive
Apre un cursore ed esegue la query, posizionandola prima della prima riga.
L'istruzione OPEN esegue la query definita nella DECLARE CURSOR dichiarazione, associando eventuali marcatori di parametro, se specificato. Una volta aperto, il cursore può essere usato con FETCH per recuperare le righe.
Questa dichiarazione può essere usata solo all'interno di una dichiarazione composta .
Annotazioni
Quando si apre il cursore, vengono generati errori semantici come TABLE_OR_VIEW_NOT_FOUND o COLUMN_NOT_FOUND_IN_TABLE , se presenti. L'apertura del cursore avvia anche l'esecuzione della query, che può generare errori di runtime, ad esempio DIVIDE_BY_ZERO a seconda della quantità di esecuzione della query.
Sintassi
OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]
Parametri
-
Nome di un cursore dichiarato. Il cursore può essere facoltativamente qualificato con un'etichetta di istruzione composta per fare riferimento a un cursore da un ambito esterno ,ad esempio
outer_label.my_cursor. USING { constant_expr [ AS param_name ] } [, ...]Clausola facoltativa per associare i valori ai marcatori di parametro nella query del cursore.
- constant_expr: espressione costante (valore letterale o variabile) da associare a un marcatore di parametro. L'espressione deve essere castable al tipo previsto dalla query.
-
AS param_name: facoltativo. Per i marcatori di parametro denominati (
:param_name), specifica il parametro da associare. Se non specificato per i marcatori di parametro senza nome (?), i parametri sono associati in base alla posizione.
Note
Il comportamento di associazione dei parametri corrisponde a EXECUTE IMMEDIATE:
- Tutti gli indicatori di parametro nella query devono essere associati.
- Per i marcatori di parametro denominati (
:name), laAS param_nameclausola specifica l'associazione. - Per i marcatori di parametro senza nome (
?), le espressioni vengono associate nell'ordine specificato.
Se la query del cursore genera un errore durante l'esecuzione (vedere Condizioni di errore), il cursore rimane in uno stato chiuso. L'apertura di un cursore non incluso nell'ambito genera CURSOR_NOT_FOUND. L'apertura di un cursore già aperto genera CURSOR_ALREADY_OPEN.
Esempi
-- Open a simple cursor without parameters
> BEGIN
DECLARE total INT;
DECLARE my_cursor CURSOR FOR SELECT sum(id) FROM range(10);
OPEN my_cursor;
FETCH my_cursor INTO total;
VALUES (total);
CLOSE my_cursor;
END;
45
-- Open cursor with positional parameters
> BEGIN
DECLARE total INT;
DECLARE param_cursor CURSOR FOR
SELECT sum(id) FROM range(100) WHERE id BETWEEN ? AND ?;
OPEN param_cursor USING 10, 20;
FETCH param_cursor INTO total;
VALUES (total);
CLOSE param_cursor;
END;
165
-- Open cursor with named parameters
> BEGIN
DECLARE min_val INT;
DECLARE named_cursor CURSOR FOR
SELECT min(id) FROM range(100) WHERE id >= :threshold;
OPEN named_cursor USING 25 AS threshold;
FETCH named_cursor INTO min_val;
VALUES (min_val);
CLOSE named_cursor;
END;
25