Maison >base de données >tutoriel mysql >Quel est le curseur de la procédure stockée MySQL ?

Quel est le curseur de la procédure stockée MySQL ?

青灯夜游
青灯夜游original
2022-01-24 17:28:354608parcourir

Dans la procédure stockée mysql, le curseur est également appelé curseur. Il s'agit d'une requête de base de données stockée sur le serveur SGBD. Il s'agit d'un ensemble de jeux de résultats renvoyés par l'opération de récupération. Il est généralement utilisé pour effectuer des opérations en avant ou en arrière. sur les données récupérées.

Quel est le curseur de la procédure stockée MySQL ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Dans MySQL, les requêtes dans les procédures stockées ou les fonctions renvoient parfois plusieurs enregistrements. Cependant, en utilisant une simple instruction SELECT, il n'y a aucun moyen d'obtenir la première ligne, la ligne suivante ou les dix premières lignes de données. utilisez un curseur pour récupérer les données une par une. Lisez les enregistrements dans le jeu de résultats de la requête. Les curseurs sont également appelés curseurs dans certains matériaux.

Introduction aux curseurs

1. Curseur : Également appelé curseur, il s'agit d'une requête de base de données stockée sur le serveur du SGBD. Ce n'est pas une instruction de sélection, mais un jeu de résultats récupéré par l'instruction.

2. Objectif : Opérations avant ou arrière sur les données récupérées, principalement utilisées pour les applications interactives, telles que les utilisateurs faisant défiler les données sur l'écran

3 Caractéristiques :

  • Peut marquer le curseur en lecture seule, afin que les données. peut lire, mais ne peut pas mettre à jour et supprimer
  • Peut contrôler les opérations directionnelles qui peuvent être effectuées (avant, arrière, premier, dernier, position absolue, position relative, etc.)
  • Peut marquer certaines colonnes comme modifiables, certaines colonnes non modifiable
  • Spécifie la portée, rendant le curseur accessible à la requête spécifique qui l'a créé (comme une procédure stockée) ou à toutes les requêtes
  • Juste le SGBD copiant les données récupérées (plutôt que de signaler les données actives dans le tableau) , Conservez les données inchangées lors de l'ouverture et de l'accès du curseur

4. SGBD prenant en charge les curseurs : DB2, MariaDB, MySQL 5, SQL Server, SQLite, Oracle et PostgreSQL, tandis que Microsoft Access ne prend pas en charge les curseurs

5. Les applications basées sur les applications Web ne sont pas très utiles (ASP, ASP.NET, ColdFusion, PHP, Python, Ruby, JSP, etc.), et la plupart des développeurs d'applications Web n'utilisent pas de curseurs

6. Utilisez :

  • Déclarez les curseurs : DECLARE. Cursor_name CURSOR FOR SELECT * FROM table_name; // Aucune donnée n'a encore été récupérée
-- MySQL游标的声明
DECLARE cursor_name CURSOR FOR select_statement

-- SQL Server游标的声明
DECLARE cursor_name CURSOR FOR select_statement [FOR [READ ONLY | UPDATE {[co lumn_list]}]]

-- Oracle游标的声明
DECLARE CORSOR cursor_name IS {select_statement}
  • Ouvrir le curseur : OPEN Cursor_name ; // Commence à récupérer les données, c'est-à-dire que l'instruction SELECT du curseur spécifié est exécutée et le résultat de la requête l'ensemble est enregistré dans une zone spécifique de la mémoire.
-- MySQL打开游标
OPEN cursor_name


-- SQL Server打开游标
OPEN cursor_name


-- Oracle打开游标
OPEN cursor_name [param1 [, param2]]
  • Get data: FETCH curseur_name into var1,var2,...,varn; //Lorsque le curseur_name récupère les données, l'indicateur de fin ne sera déclenché qu'à la prochaine récupération
-- MySQL游标获取数据
FETCH cursor_name INTO var1_name [, var2_name] ...


-- SQL Server游标获取数据
FETCH NEXT FROM cursor_name [INTO fetch_list]


-- Oracle游标获取数据
FETCH cursor_name  {INTO : host_var1 [[INDICATOR] : indicator_var1] [, : host_var2 [[INDICATOR] : indicator_var2]] | USING DESCRIPTOR DESCRIPTOR}
  • Fermez le curseur : CLOSE Cursor_name;
-- MySQL关闭游标,会主动释放资源,所以不需要DEALLOCATE语句
CLOSE cursor_name


-- SQL Server关闭游标和释放资源
CLOSE cursor_name
DEALLOCATE cursor_name


-- Oracle关闭游标,会主动释放资源,所以不需要DEALLOCATE语句
CLOSE cursor_name

【Recommandation associée :Tutoriel vidéo MySQL

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