Maison  >  Article  >  base de données  >  Comment écrire le curseur dans MySQL

Comment écrire le curseur dans MySQL

coldplay.xixi
coldplay.xixioriginal
2020-11-19 10:03:252997parcourir

La méthode d'écriture du curseur dans mysql : déclarez d'abord le curseur ; puis ouvrez le curseur, le code est [OPEN Cursor_name] ; puis capturez le curseur enfin, fermez le curseur, le code est [CLOSE Cursor_name].

Comment écrire le curseur dans MySQL

L'environnement d'exploitation de ce tutoriel : Système Windows 7, MySQL version 5.8 Cette méthode convient à toutes les marques d'ordinateurs.

Plus de recommandations d'apprentissage gratuites connexes : Tutoriel MySQL(vidéo)

Comment écrire un curseur dans MySQL :

1. Qu'est-ce qu'un curseur ?

Dans une procédure stockée ou une fonction, vous pouvez utiliser le curseur pour parcourir l'ensemble de résultats. Ce qui suit est mon opinion personnelle. Le curseur est similaire à la variable auto-incrémentée i dans la boucle Java.

2. L'utilisation du curseur

L'utilisation du curseur comprend les trois étapes suivantes :

1. Déclarer le curseur

Format : DECLARE cursor_name CURSOR FOR select_statement;

Cursor_name : nom du curseur, défini par l'utilisateur, il est préférable de connaître le nom.

  select_statement : Instruction de requête complète, noms de colonnes dans la table de requête (explication détaillée du cas ci-dessous).

2. Activez le curseur

curseur_name : Le nom du curseur une fois déclaré.

Format : OPEN cursor_name;

3. Capturer le curseur

Format : FETCH cursor_name INTO var_name...; (... signifie qu'il peut y en avoir plusieurs)

nom_curseur : Le nom du curseur une fois déclaré.

 var_name : Nom de la variable personnalisée. (Explication détaillée du cas plus tard)

4. Fermez le curseur

Format : CLOSE cursor_name;

curseur_name : Le nom du curseur une fois déclaré.

3, un petit cas d'utilisation du curseur

Ce cas n'a aucune signification pratique, juste pour démontrer l'utilisation du curseur

Créez d'abord un utilisateur Table

CREATE TABLE `users` (
  `u_id` int(4) NOT NULL,
  `u_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `u_age` int(4) DEFAULT NULL,
  PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

Insérer les données suivantes

Créer une procédure stockée nommée select_age

BEGIN
    #Routine body goes here...
    declare i_user_id int;
    declare i_user_age int;
    declare cur_age cursor for select u_id,u_age from users;
    declare exit handler for not FOUND close cur_age;
    set @age_ji = 0;
    set @age_ou = 0;
    
    open cur_age;
    REPEAT
        fetch cur_age into i_user_id,i_user_age;
        if i_user_id%2 = 1 THEN
            set @age_ji = @age_ji + i_user_age; 
        else
            set @age_ou = @age_ou + i_user_age;
        end if;
    until 0 end REPEAT;
    close cur_age;
END

Appeler la procédure stockée

call select_age();
select @age_ji,@age_ou;

Explication détaillée du code :

1, définissez d'abord deux variables locales i_user_id et i_user_age utilisées pour stocker les colonnes de la table parcourues par le curseur ;

2. Déclarez un curseur pour parcourir les colonnes u_id et u_age dans la table des utilisateurs.

3, déclarez une exception et fermez le curseur lorsqu'une exception se produit.

4. Définissez deux variables utilisateur pour stocker les résultats finaux.

5, allumez le curseur.

6. Écrivez un corps de boucle. La condition terminale est de parcourir la dernière colonne du tableau.

7, capturez le curseur et placez le contenu parcouru dans deux variables locales.

8. En jugeant la parité de i_user_id, ajoutez respectivement i_user_age aux deux variables utilisateur

9.

4. Notes

Les variables, les exceptions personnalisées, la gestion des exceptions et les curseurs sont tous définis via le mot-clé declare, et il existe des exigences d'ordre entre eux. Les variables et les exceptions personnalisées doivent être placées en premier, suivies de la déclaration du curseur et enfin de la déclaration de gestion des exceptions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn