Comment écrire Curseurs dans SQL

August 25

Normalement, SQL (Structured Query Language) demandes travaillent avec des ensembles complets de données. Cependant, il y a des moments où il peut être préférable ou même nécessaire pour travailler avec les données d'une ligne à la fois. Pour ces circonstances, les curseurs sont la meilleure option. Ils permettent une opération à effectuer sur chaque ligne d'un ensemble de données, un à la fois. Par exemple, les curseurs sont la meilleure façon de se déplacer à travers toute une série de données et d'appliquer une procédure à chaque ligne de l'ensemble. Toutefois, cela a un coût: les curseurs sont généralement beaucoup plus lent que d'autres opérations SQL.

Instructions

1 Tapez la commande suivante dans la console SQL Server pour déclarer le curseur:

DECLARE CURSOR Cursor1

2 Fournir une instruction SELECT qui récupère les données le curseur va travailler sur:

POUR

SELECT nom_famille

FROM employees

FOR UPDATE DE last_name

Cela permettra de récupérer une liste de last_names à partir d'une table des employés. Il précise également que vous serez mettez à jour le last_name que vous avancez dans les données du curseur.

3 Ouvrez le curseur en tapant ce qui suit:

OUVERT Cursor1

4 Commencez itérer les lignes en tapant la commande suivante:

FETCH SUIVANT DE Cursor1

EN @LASTNAME

TANDIS @@ FETCH_STATUS = 0

COMMENCER

5 Mettre à jour le dernier nom en tapant ce qui suit:

EXEC UPPER (@LASTNAME)

Ce sera réglé le dernier nom de la ligne actuelle il est donc dans toutes les lettres majuscules.

6 Fetch une autre ligne avant de terminer la boucle WHILE commencé à l'étape 4:

FETCH SUIVANT DE Cursor1

EN @LASTNAME

FIN

7 Fermez le curseur et libérer son nom afin qu'il puisse être utilisé à nouveau si nécessaire:

Cursor1 FERMER

Cursor1 DEALLOCATE

Conseils et avertissements

  • Ce tutoriel utilise Microsoft SQL Server. La syntaxe peut changer très légèrement pour d'autres implémentations de SQL telles que MySQL.
  • Les curseurs sont très lent par rapport à d'autres opérations dans SQL, elles doivent donc être utilisés qu'en cas de nécessité.

          

Post a comment: