Dans la plupart des cas, lors de l'exécution de requêtes SQL à l'aide de Shell MySQL ou MySQL Workbench, nous n'enregistrons pas les résultats, même si nous avons la fonctionnalité pour enregistrer les résultats traités par le serveur à l'aide d'une procédure stockée.
Dans ce tutoriel, je ne discuterai pas des procédures, des fonctions ou des déclencheurs stockés. Au lieu de cela, je vais simplement plonger pour vous montrer comment vous pouvez utiliser les curseurs MySQL pour exécuter les résultats dans les procédures stockées.
Avant de commencer à créer et à utiliser un curseur avec des exemples, prenons un moment pour discuter de quelques points clés sur un curseur que vous devez connaître:
Caractéristiques d'un curseur MySQL
Maintenant que nous savons ce que signifie un curseur, nous pouvons commencer à illustrer comment il fonctionne en utilisant des exemples du monde réel:
Utilisation de base
La syntaxe générale pour déclarer un curseur dans MySQL est simple. Nous commençons par utiliser le mot clé Declare comme indiqué dans la requête de l'échantillon ci-dessous:
Comment déclarer un curseur
Declare Cursor_Name Cursor pour select_expression;Le curseur_name est le nom donné au curseur pendant la déclaration. Notez que la déclaration d'un curseur doit être après toute variable déclarée pour empêcher MySQL de entraîner des erreurs.
Ensuite, le select_expression, qui stocke l'instruction SELECT associée au curseur.
Comment ouvrir un curseur
Une fois que nous avons déclaré un curseur et MySQL est conscient que le curseur existe, nous pouvons commencer à l'utiliser qui nécessite que le curseur soit ouvert.
La syntaxe générale pour ouvrir un curseur est comme indiqué dans la requête ci-dessous:
Open Cursor_name;Cette commande ouvre les curseurs référencés par son nom et on peut commencer à l'utiliser.
Comment récupérer les données
Avoir le curseur ouvert vous permet de récupérer les informations stockées dans une procédure, une fonction ou un déclencheur.
La syntaxe générale pour récupérer les données à l'aide d'un curseur est comme indiqué:
Fetch cursor_name en variables;NOTE: Comme mentionné, assurez-vous que le curseur est utilisé après que les variables sont déclarées pour éviter les erreurs.
Comment fermer et libérer un curseur
Une fois les opérations nécessitant le curseur défini terminé, il est préférable de fermer le curseur qui libère la mémoire qui lui est associée.
Une fois qu'un curseur a été fermé, un utilisateur doit rouvrir le curseur à l'aide des mots clés ouverts (illustré ci-dessus) avant d'utiliser le curseur.
Vous n'avez pas besoin de déclarer le curseur après la déclaration de clôture.
La syntaxe générale pour fermer un curseur est comme indiqué dans la requête ci-dessous:
Close Cursor_name;La gestion des erreurs
MySQL Cursor fonctionne en lisant récursivement la ligne suivante dans l'ensemble de résultats. Si la ligne suivante n'est pas disponible, le curseur se ferme et ne renvoie pas les données sauf si spécifiées. Cela peut être un problème surtout après que le curseur atteigne la fin du résultat.
En tant que solution, un gestionnaire non trouvé est défini. Cela spécifie les mesures à prendre si la ligne suivante n'est pas trouvée.
La syntaxe générale pour la gestion des erreurs lors de l'utilisation d'un curseur est:
DÉCLAREZ LE PROCESSION HANDER INTENDRE SET TERMINE = TRUE;La valeur de terminaison est une variable utilisée pour spécifier que le curseur a atteint la fin du résultat. Le nom de la variable peut être n'importe quel nom tant qu'il s'adapte à la convention de dénomination de la variable MySQL.
NOTE: Comme toutes les variables utilisées dans un curseur, elle doit être définie avant d'être utilisée dans le curseur.
Exemple de cas d'utilisation
Créons un curseur qui collecte les e-mails des clients disponibles dans le tableau client de la base de données de l'exemple de Sakila.
La ressource pour le téléchargement et l'installation de la base de données Sakila est ci-dessous:
https: // dev.mysql.com / doc / sakila / en /
Ce qui suit illustre une procédure qui utilise un curseur pour récupérer les e-mails:
Utilisez Sakila;Une fois la requête exécutée, vous obtiendrez une sortie comme indiqué ci-dessous:
Conclusion
Dans ce didacticiel, nous avons traversé l'utilisation des curseurs MySQL pour analyser les données stockées dans l'ensemble de résultats. Considérez la documentation pour maîtriser comment implémenter les curseurs.