Exemples de curseur MySQL

Exemples de curseur MySQL
Dans MySQL, la requête sélectionnée renvoie une liste des enregistrements correspondants après l'exécution appelée l'ensemble de résultats. Le curseur est une caractéristique utile de MySQL pour traverser chaque enregistrement séparément de l'ensemble de résultats. Parfois, il faut effectuer un traitement supplémentaire pour tous les enregistrements spécifiques de l'ensemble de résultats avant de retourner la sortie de la requête. Cela peut être fait facilement en utilisant le curseur. Les fonctionnalités, les avantages, les inconvénients et les utilisations du curseur MySQL ont été décrits dans ce tutoriel.

Caractéristiques du curseur MySQL:

  1. MySQL Cursor est asensible pour la version 8 MySQL+. Cela signifie que le serveur de base de données peut ou non faire une copie de l'ensemble de résultats.
  2. MySQL Cursor est en lecture seule. Il ne peut donc pas être utilisé pour mettre à jour l'enregistrement.
  3. Le curseur MySQL n'est pas un défilement. Cela signifie qu'il peut aller de l'avant uniquement et ne peut sauter aucun enregistrement.

Étapes pour utiliser un curseur:

Les principales étapes de l'utilisation du curseur dans MySQL pour lire chaque enregistrement de jeu de résultats sont présentées ci-dessous.

Déclarer un curseur:

Declare Cursor_Name Cursor pour select_statement;

La variable du curseur nécessite de définir pour itératiser le jeu de résultats renvoyé par l'instruction SELECT.

Ouvrir le curseur

Open Cursor_name;

Le curseur doit s'ouvrir pour pointer le point de départ de l'ensemble de résultats.

Récupérer le curseur

Fetch cursor_name dans variable_list;

La commande fetch est utilisée pour lire les champs définis dans la requête sélectionnée qui a été utilisée au moment de la déclaration du curseur.

Fermez le curseur

Close Cursor_name;

Le curseur est tenu de fermer pour réinitialiser l'ensemble de résultats et supprimer la référence à l'ensemble de résultats.

Conditions préalables:

Vous devez créer les tables nécessaires avec des données pour connaître l'utilisation d'un curseur dans MySQL. Ouvrez le terminal et exécutez la commande suivante pour se connecter avec le serveur MySQL s'il n'y a pas de mot de passe pour l'utilisateur racine.

$ sudo mysql -u racine

Exécutez la commande suivante pour sélectionner la base de données.

Utilisez test_db;

Exécutez la commande suivante pour créer une base de données nommée test_db.

Créer une base de données test_db;

Exécutez la requête suivante pour créer un tableau nommé Sales_persons avec quatre champs.

Créer une table Sales_persons (
id int Auto_increment Clé primaire,
nom varchar (30) pas null,
Email Varchar (50),
contact_no varchar (30));

Exécutez la requête suivante pour insérer trois enregistrements dans le vendeur tableau.

Insérer dans 'Sales_Persons' ('Id', 'Name', 'Email', 'Contact_No') VALEURS (NULL, 'KAMAL HASAN', 'KAMAL @ GMAIL.com ',' 0191275634 '),
(Null, «Nila Hossain», «Nila @ gmail.com ',' 01855342357 '),
(Null, 'Abir Hossain', 'Abir @ Yahoo.com ',' 01634235698 ');

Exécutez la requête suivante pour créer un tableau nommé ventes avec quatre champs qui contient une clé étrangère qui créera la relation un à plusieurs Sales_persons table à la ventes tableau.

Créer des ventes de tables (
id int not null clé primaire,
Sales_date Date pas null,
Montant int,
sp_id int,
Contrainte FK_SP Foreign Key (SP_ID)
Références Sales_persons (ID)
Sur Delete Cascade sur Update Cascade);

Exécutez la requête suivante pour insérer quatre enregistrements dans le ventes tableau.

Insérer dans les valeurs «Sales» («Id», «Sales_date», «Montant», «SP_ID»)
('90', '2021-11-09', '800000', '1'),
('34', '2020-12-15', '5634555', '3'),
('67', '2021-12-23', '900000', '1'),
(«56», «2020-12-31», «6700000», «1»);

Utilisation du curseur MySQL:

Le curseur est principalement utilisé dans la procédure ou la fonction MySQL qui contient une ou plusieurs requêtes de sélection, et le curseur déclaré itère chaque enregistrement de l'ensemble de résultats renvoyé par la requête. Créer une fonction MySQL nommée Calculer avec la déclaration suivante qui prendra un argument entier et renverra une valeur flottante. La requête sélectionnée qui a été utilisée dans la fonction calculera le montant total des ventes de chaque vendeur et renverra le nom du vendeur et les ventes totales dans l'ensemble de résultats. La fonction du curseur est de calculer 15% du total des ventes en prime si le montant total des ventes est supérieur à 10000; Sinon, le bonus sera de 10% du total des ventes. La fonction renverra le montant bonus en fonction de la valeur d'identification du vendeur. Exécutez l'instruction suivante à partir de l'invite MySQL après avoir sélectionné la base de données pour créer la fonction.

Délimiteur //
Créer une fonction 'Calcule_Bonus' ('Spid' int)
Renvoie Varchar (200)
Lit des données SQL
Déterministe
COMMENCER
DÉCLARIEZ FAIT INT DEFAULT FAUX;
DÉCLAREZ TOTAL int défaut 0;
Déclarer la personne Varchar (50) par défaut "";
Déclarer le bonus int défaut 0;
DÉCLAREZ VARCHAR (200);
Déclarer le curseur Cur pour
Sélectionnez le nom, somme (montant)
À partir des ventes, Sales_persons
Où Sales_Persons.id = ventes.sp_id et sp_id = Spid
Groupe par sp_id;
Déclarer le gestionnaire de poursuite pour un ensemble non trouvé fait = true;
Cur ouvert;
Récupérer Cur en personne, total;
Si total> 10000 alors
Régler le bonus = total * 0.15;
AUTRE
Régler le bonus = total * 0.dix;
FIN SI;
Set output = concat ("le bonus de", personne ", est tk.", prime, ".");
CLORIE CUR;
Sortie de retour;
FIN;
//

Exécutez la requête suivante pour lire tous les enregistrements du Sales_persons tableau.

SELECT * FROM SALES_PERSONS;

Exécutez la requête suivante pour lire tous les enregistrements du ventes tableau.

Sélectionner * dans les ventes;

Exécutez la requête suivante pour appeler le Calculer_bonus () Fonction de MySQL avec la valeur de l'argument, 1. Selon le tableau des ventes, il y a trois enregistrements pour le vendeur dont l'identification est 1. Ainsi, le bonus sera de 15% de réduction (6700000 + 900000 + 800000).

Sélectionnez Calculate_Bonus (1);

Exécutez la requête suivante pour appeler le Calculer_bonus () Fonction de MySQL avec la valeur de l'argument, 2. Selon le tableau des ventes, il n'y a aucun dossier pour le vendeur dont l'ID est 2. Donc, le bonus sera 0.

Sélectionnez Calculer_bonus (2);

Exécutez la requête suivante pour appeler le Calculer_bonus () Fonction de MySQL avec la valeur de l'argument, 3. Selon le tableau des ventes, il y a un dossier pour le vendeur dont l'ID est 3. Ainsi, le bonus sera de 15% de 5634555.

Sélectionnez Calculate_Bonus (3);

Conclusion:

MySQL Cursor facilite la tâche spécifique en itérant chaque ligne de table. MySQL Cursor a été montré dans ce tutoriel en utilisant une fonction MySQL. Le curseur MySQL peut également être utilisé dans la procédure MySQL. J'espère que le concept du curseur MySQL sera effacé pour l'utilisateur, et l'utilisateur pourra utiliser le curseur après avoir lu ce tutoriel.