Les curseurs en SQL font partie intégrante de toute base de données, ce qui aide essentiellement un utilisateur à parcourir la base de données sans trop de tracas. Par le biais de cet article sur Cursor in SQL, je vous donnerai tous les détails nécessaires dont vous devez avoir besoin avant de vous mouiller les pieds.
Voici les sujets dont je vais parler dans cet article :
- Qu'est-ce qu'un curseur en SQL ?
- Types de curseurs SQL
- Syntaxe d'un curseur SQL
- Cycle de vie du curseur
Qu'est-ce qu'un curseur en SQL ?
Le curseur en SQL est un objet qui permet de parcourir les lignes de n'importe quel ensemble de résultats. Avec cela, vous pouvez traiter une ligne individuelle d'une base de données renvoyée par une requête. Il s'agit d'une zone de travail temporaire ou d'une zone de contexte créée dans le système de mémoire lors de l'exécution d'une instruction SQL qui stocke les données extraites de la base de données et facilite leur manipulation. Vous pouvez le considérer comme un arrangement de lignes avec un pointeur pointant vers la ligne actuelle. Un curseur est un objet de base de données qui peut contenir plusieurs lignes mais qui ne peut traiter qu'une seule ligne à la fois. L'ensemble des lignes détenues par un curseur est appelé actif Positionner. Ainsi, vous pouvez contrôler l'enregistrement d'une table dans une technique singleton, c'est-à-dire une ligne à tout moment.
Maintenant que vous savez ce qu'est un curseur en SQL, allons de l'avant et examinons ses différents types.
Types de curseur SQL
SQL fournit deux types de curseurs que j'ai listés ci-dessous :
-
Curseur implicite
Chaque fois que des opérations DML telles que INSERT, UPDATE et DELETE sont traitées dans la base de données, des curseurs implicites sont générés automatiquement et utilisés par le framework. Ces types de curseurs sont utilisés pour le traitement interne et ne peuvent pas être contrôlés ou référencés à partir d'une autre zone de code. Les curseurs implicites dans SQL ne contiennent que les lignes affectées par l'opération et ne peuvent faire référence qu'au curseur le plus récent à l'aide des attributs de curseur indiqués ci-dessous dans le tableau.
Attribut | Description |
%FOUND | Il renverra TRUE si une instruction INSERT, UPDATE ou DELETE affecte une ou plusieurs lignes ou si une instruction SELECT INTO renvoie une ou plusieurs lignes. Dans d'autres cas, il retournera FALSE. |
%NOTFOUND | C'est techniquement l'opposé de l'attribut %FOUND. Elle renvoie TRUE si une instruction INSERT, UPDATE ou DELETE n'affecte aucune ligne ou si une instruction SELECT INTO ne renvoie aucune ligne. Sinon, il retourne juste FALSE. |
%ISOPEN | Cet attribut renverra toujours FALSE pour les curseurs implicites car le curseur SQL est automatiquement fermé immédiatement après l'exécution de l'instruction SQL associée. |
%ROWCOUNT | Il renvoie le nombre total de lignes affectées par une instruction INSERT, UPDATE ou DELETE, ou les lignes renvoyées par une instruction SELECT INTO. |
Curseur explicite
Ce type de curseur est généré chaque fois que des données sont traitées par un utilisateur via un bloc SQL. Généralement, l'utilisation de la requête SELECT déclenche la création d'un curseur explicite et peut contenir plusieurs lignes mais n'en traiter qu'une à la fois. Ce type de curseur permet de contenir les enregistrements présents dans une colonne. Cela permet aux programmeurs de créer une zone de contexte nommée pour exécuter leurs opérations DML pour un meilleur contrôle. De plus, il doit être défini dans le bloc SQL et est à son tour créé pour une requête SELECT utilisant ce code.
Pour mieux comprendre un curseur, voyons maintenant quelle est la syntaxe d'un curseur en SQL.
Syntaxe d'un curseur SQL
Vous trouverez ci-dessous la syntaxe générale pour créer un curseur explicite.
CURSOR cursorName IS selectStatement;
Ici :
cursorName – Ceci représente un nom valide pour le curseur
selectStatement – Ceci représente une requête de sélection qui renverra plusieurs lignes
Allons maintenant plus loin dans cet article et voyons le cycle de vie d'un curseur SQL.
Cycle de vie du curseur
Il y a essentiellement 5 étapes dans le cycle de vie d'un curseur en SQL que j'ai énumérées ci-dessous :
- Déclarer
DECLARE cursorName CURSOR FOR selectStatement;
Cette étape vous aidera à spécifier le nom et le type de données du curseur et l'instruction SELECT définira son jeu de résultats.
- Ouvrir
OPEN cursorName;
Cette étape vous permettra d'ouvrir et de remplir le curseur en l'exécutant.
- Récupérer
FETCH NEXT FROM cursor INTO variableList;
Cette étape récupère une ligne à partir du curseur et la stocke dans une ou plusieurs variables.
[Facultatif] Vérifier l'état
WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM cursorName; END;
Cette fonction renvoie l'état de la dernière instruction FETCH qui a été exécutée contre le curseur. Si cette fonction renvoie 0, cela signifie que l'opération FETCH a réussi. Afin de récupérer toutes les lignes du curseur, la clause WHILE est utilisée.
- Fermer
CLOSE cursorName;
Cette étape vous aidera à fermer le curseur une fois les opérations terminées.
- Désallouer
DEALLOCATE cursor_name;
Cette étape aidera à désallouer le curseur et à libérer de l'espace mémoire.
Avec ceci, je voudrais conclure cet article sur Cursor in SQL. J'espère que cet article vous a aidé à ajouter de la valeur à vos connaissances. Pour plus d'informations sur SQL ou les bases de données, vous pouvez vous référer à notre liste de lecture complète ici :Bases de données Edureka .
Les bases de SQL pour les débutants | Apprendre SQL | Tutoriel SQL pour débutants | Edureka
Cette vidéo d'Edureka sur "SQL Basics for Beginners" vous aidera à comprendre les bases de SQL ainsi que les requêtes SQL qui sont très populaires et essentielles.
Si vous souhaitez obtenir une formation structurée sur MySQL, consultez notre Formation de certification MySQL DBA qui vient avec une formation en direct dirigée par un instructeur et une expérience de projet réelle. Cette formation vous aidera à comprendre MySQL en profondeur et vous aidera à maîtriser le sujet.
Vous avez une question pour nous ? Veuillez le mentionner dans la section des commentaires de "Curseur en SQL ” et je vous répondrai.