Comment récupérer les données SQL à partir d'une seule rangée

UN curseur

Sommaire

SQL permet de récupérer (ou mettre à jour ou supprimer) une seule ligne à la fois de sorte que vous pouvez utiliser SQL en combinaison avec une application écrite dans l'une des langues populaires. Traitement curseurs est un processus en trois étapes:

  1. La DECLARE CURSOR déclaration précise le nom et la portée du curseur.

  2. La OUVERT déclaration recueille les lignes de la table sélectionnés par le DECLARE CURSOR interroger expression.

  3. La FETCH instruction récupère les données.

Le curseur peut pointer vers une des lignes de la portée du curseur, ou à l'emplacement immédiatement avant la première ligne dans le champ d'application ou à l'emplacement immédiatement après la dernière ligne dans le champ d'application, ou à l'espace vide entre deux rangées. Vous pouvez spécifier l'endroit où le curseur pointe avec la clause d'orientation dans le FETCH déclaration.

Syntaxe

La syntaxe de la FETCH déclaration est

FETCH [[orientation] FROM] curseur nameINTO cible spécification [, cibler spécification] ... -

Sept options d'orientation sont disponibles:

  • SUIVANT




  • AVANT

  • PREMIER

  • DERNIER

  • ABSOLUTE

  • RELATIVE

L'option par défaut est SUIVANT, qui, incidemment, était le seulement orientation disponible dans des versions de SQL Avant SQL-92. La SUIVANT orientation déplace le curseur d'où il est à la ligne suivante dans l'ensemble spécifié par l'expression de la requête. Cela signifie que si le curseur se trouve avant le premier enregistrement, il se déplace sur le premier enregistrement.

Si elle pointe à enregistrer n, il se déplace pour enregistrer n+1. Si le curseur pointe vers le dernier enregistrement dans le jeu, il se déplace au-delà de ce dossier, et la notification d'une condition pas de données est retourné dans les SQLSTATE variable système.

Les caractéristiques cibles sont soit des variables ou paramètres de l'hôte, selon que SQL embarqué ou un langage de module, respectivement, est l'aide du curseur. Le nombre et le type des spécifications cibles doivent correspondre au nombre et les types des colonnes spécifiées par l'expression de requête dans le DECLARE CURSOR.

Donc, dans le cas de SQL embarqué, quand vous allez chercher une liste de cinq valeurs d'une ligne d'une table, cinq variables hôte doit être là pour recevoir ces valeurs, et ils doivent être les bons types.

Orientation d'un curseur de défilement

Parce que le curseur SQL est déroulant, vous avez d'autres choix en plus SUIVANT. Si vous spécifiez AVANT, le pointeur se déplace à la ligne précédant immédiatement son emplacement actuel. Si vous spécifiez PREMIER, il pointe vers le premier enregistrement dans le jeu, et si vous spécifiez DERNIER, il pointe vers le dernier enregistrement.

Lorsque vous utilisez le ABSOLUTE et RELATIVE orientation, vous devez spécifier une valeur entière, aussi bien. Par example, FETCH ABSOLUTE 7 déplace le curseur vers la septième ligne depuis le début de l'ensemble. FETCH RELATIVE 7 déplace le curseur au-delà de sept rangées de sa position actuelle. FETCH RELATIVE 0 ne déplace pas le curseur.

FETCH RELATIVE 1 a le même effet que FETCH PROCHAINE. FETCH RELATIVE -1 a le même effet que FETCH PRIOR. FETCH ABSOLUTE 1 vous donne le premier enregistrement de l'ensemble, FETCH ABSOLUTE 2 vous donne le deuxième enregistrement dans l'ensemble, et ainsi de suite.

De même, FETCH ABSOLUTE -1 vous donne le dernier enregistrement dans le jeu, FETCH ABSOLUTE -2 vous donne l'enregistrement suivant avant-dernier, et ainsi de suite. Spécification FETCH ABSOLUTE 0 renvoie le code de condition exception sans données, volonté FETCH ABSOLUTE 17 si seulement 16 lignes sont dans l'ensemble. FETCH vous donne l'enregistrement spécifié par la spécification de valeur simple.

DELETE et UPDATE positionnées

Vous pouvez effectuer des opérations delete et update sur la ligne à laquelle un curseur pointe actuellement. La syntaxe de la EFFACER déclaration ressemble à ceci:

DELETE FROM nom-table WHERE CURRENT OF nom_curseur -

Si le curseur ne pointe pas vers une rangée, l'instruction renvoie une condition d'erreur, et aucune suppression se produit.

La syntaxe de la METTRE À JOUR déclaration est la suivante:

UPDATE table ensemble de noms de colonne nom = valeur [, colonne nom = valeur] ... WHERE CURRENT OF nom_curseur -

La valeur que vous placez dans chaque colonne spécifiée doit être une expression de la valeur ou le mot-clé DEFAULT. Si une opération de mise à jour positionnée tenté renvoie une erreur, la mise à jour n'a pas lieu.


» » » » Comment récupérer les données SQL à partir d'une seule rangée