Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à :
Databricks Runtime 18.1 et versions ultérieures
Ouvre un curseur et exécute sa requête, la positionnant avant la première ligne.
L’instruction OPEN exécute la requête définie dans la DECLARE CURSOR déclaration, en liant les marqueurs de paramètres si spécifiés. Une fois ouvert, le curseur peut être utilisé pour FETCH récupérer des lignes.
Cette instruction peut uniquement être utilisée dans une instruction composée.
Note
Lors de l’ouverture du curseur, des erreurs sémantiques telles que TABLE_OR_VIEW_NOT_FOUND ou COLUMN_NOT_FOUND_IN_TABLE sont déclenchées si elles sont présentes. L’ouverture du curseur démarre également l’exécution de la requête, ce qui peut générer des erreurs d’exécution telles que DIVIDE_BY_ZERO en fonction de la quantité de la requête exécutée.
Syntaxe
OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]
Paramètres
-
Nom d’un curseur déclaré. Le curseur peut éventuellement être qualifié avec une étiquette d’instruction composée pour référencer un curseur à partir d’une étendue externe (par exemple).
outer_label.my_cursor USING { constant_expr [ AS param_name ] } [, ...]Clause facultative pour lier des valeurs à des marqueurs de paramètres dans la requête de curseur.
- constant_expr : expression constante (littéral ou variable) à lier à un marqueur de paramètre. L’expression doit être castable au type attendu par la requête.
-
AS param_name : Facultatif. Pour les marqueurs de paramètres nommés (
:param_name), cela spécifie le paramètre à lier. S’il n’est pas spécifié pour les marqueurs de paramètres non nommés (?), les paramètres sont liés par position.
Remarques
Le comportement de liaison de paramètre correspond EXECUTE IMMEDIATEà :
- Tous les marqueurs de paramètre de la requête doivent être liés.
- Pour les marqueurs de paramètre nommés (
:name), laAS param_nameclause spécifie la liaison. - Pour les marqueurs de paramètres non nommés (
?), les expressions sont liées dans l’ordre spécifié.
Si la requête du curseur génère une erreur pendant l’exécution (voir Conditions d’erreur), le curseur reste dans un état fermé. L’ouverture d’un curseur qui n’est pas dans l’étendue déclenche CURSOR_NOT_FOUND. L’ouverture d’un curseur déjà ouvert déclenche CURSOR_ALREADY_OPEN.
Exemples
-- 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