FETCH
Lire un enregistrement de l’ensemble de données associé au curseur.
PSQL
FETCH [<fetch_scroll> FROM] cursor_name [INTO [:]varname [, [:]varname ...]]; <fetch_scroll> ::= NEXT | PRIOR | FIRST | LAST | RELATIVE n | ABSOLUTE n
Paramètre | Description |
---|---|
cursor_name |
Nom du curseur : un curseur portant ce nom doit être prédéclaré à l’aide de la commande |
var_name |
Variable PSQL. |
n |
Entier. |
L’instruction FETCH
sélectionne la ligne de données suivante dans le jeu de données du curseur résultant et affecte les valeurs des colonnes aux variables PSQL. L’instruction FETCH
s’applique uniquement aux curseurs déclarés dans l’instruction DECLARE …'. CURSOR
.
L’Instruction FETCH
peut spécifier dans quelle direction et de combien d’enregistrements la position du curseur avance. La clause NEXT
peut être utilisée avec des curseurs défilants ou non.
Les autres clauses ne peuvent être utilisées qu’avec des curseurs déroulants.
NEXT
-
fait avancer le curseur d’une entrée. Il s’agit de l’action par défaut.
PRIOR
-
déplace le curseur en arrière d’une entrée.
FIRST
-
déplace le curseur sur la première entrée.
LAST
-
déplace le curseur sur la dernière entrée.
ABSOLTE n
-
déplace le curseur à l’entrée spécifiée ; n est une expression entière, où
1
indique la première ligne. Pour les valeurs négatives, la position absolue est prise à partir de la fin du jeu de résultats, donc-1
indique la dernière ligne,-2
l’avant-dernière ligne, etc. Une valeur nulle (0
) viendra avant la première ligne. RELATIVE n
-
déplace le curseur à n lignes de la position actuelle ; les nombres positifs déplacent le pointeur vers l’avant et les nombres négatifs vers l’arrière ; l’utilisation de zéro (
0
) ne déplacera pas le curseur etROW_COUNT
sera mis à zéro car aucune nouvelle ligne n’a été sélectionnée.
La clause optionnelle INTO
place les données de la ligne courante du curseur dans des variables PSQL.
Il est permis d’utiliser le nom du curseur comme une variable de type d’enregistrement (similaire à OLD et NEW dans les triggers) qui permet d’accéder aux colonnes du jeu résultant (c’est-à-dire cursor_name . columnname).
-
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 ;
-
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 de la variable curseur pour les lectures suivantes. L’exécution de l’instructionDELETE
(avec la suggestionWHERE CURRENT OF
) mettraNULL
pour les valeurs des champs de la variable curseur pour les lectures suivantes.
Pour vérifier que les entrées du jeu de données sont épuisées, la variable contextuelle ROW_COUNT
est utilisée pour retourner le nombre de lignes sélectionnées par l’instruction.Si l’enregistrement suivant dans l’ensemble de données est lu, ROW_COUNT est égal à un, sinon zéro.