Curseur inopiné
La clause facultative AS CURSOR
crée un curseur nommé qui peut être référencé (en utilisant la clause WHERE CURRENT OF
) dans l’instruction composée qui suit la clause DO
afin de supprimer ou de modifier la ligne courante.
Il est permis d’utiliser le nom du curseur comme une variable de type enregistrement (similaire à OLD et NEW dans les triggers) qui permet d’accéder aux colonnes du jeu résultant (i.e. cursor_name . columnname). L’utilisation de la clause AS CURSOR
rend la clause INTO
facultative.
-
Pour résoudre l’ambiguïté lors de l’accès à une variable curseur, un préfixe deux-points est requis avant le nom du curseur ;
-
La variable curseur peut être accédée sans le préfixe deux-points, mais dans ce cas, selon la portée des contextes existants dans la requête, le nom peut être résolu comme un contexte de requête au lieu du curseur ;
-
Les variables du curseur sont en lecture seule ;
-
Dans une instruction
FOR SELECT
sans la clauseAS CURSOR
, la clauseINTO
doit être utilisée. Si la clauseAS CURSOR
est spécifiée, la clauseINTO
n’est pas requise mais autorisée ; -
La lecture d’une variable curseur renvoie les valeurs actuelles des champs. Cela signifie que l’Instruction
UPDATE
(avec la clauseWHERE CURRENT OF
) mettra également à jour les valeurs des champs dans la variable curseur pour les lectures suivantes. L’exécution de l’instructionDELETE
(avec la suggestionWHERE CURRENT OF
) mettra NULL pour les valeurs des champs de la variable curseur pour les lectures suivantes.
Note
|
|