Explication des procédures stockées et des curseurs en base de données

WI
Wilan
3 min de lecture
Stored Procedure & Cursor

Procédure stockée

Une procédure stockée est un ensemble d'instructions SQL ou peut être considérée comme un sous-programme avec un nom spécifique stocké dans la base de données.

Le processus effectué par la procédure stockée consiste à recevoir des paramètres d'entrée, puis à renvoyer des valeurs sous forme de paramètres de sortie à l'appelant, ainsi qu'à effectuer des opérations de traitement de données sur la base de données exécutées par un programme tel qu'un déclencheur ou une autre procédure stockée.

L'utilisation de procédures stockées présente plusieurs avantages :

  • Amélioration des performances de l'application, car la procédure stockée créée s'exécute plus rapidement qu'une instruction SQL envoyée par l'application et non compilée.
  • Réduction du trafic réseau entre la base de données et l'application, car il n'est pas nécessaire d'envoyer du SQL non compilé.
  • Peut être utilisé de manière répétée et transparente dans toutes les applications.

Cependant, l'utilisation de procédures stockées présente également quelques inconvénients :

  • Impossible de déboguer.
  • Augmente la charge sur le matériel du serveur.
  • L'écriture n'est pas facile et nécessite des connaissances spécifiques.

Syntaxe de la procédure stockée

La syntaxe de la procédure stockée est la suivante :

Syntaxe d'écriture de procédure stockée

DELIMITER //

CREATE PROCEDURE nama_procedure()
BEGIN
    query sql
END //

DELIMITER ;

Syntaxe d'appel de procédure stockée

CALL nama_procedure();

Syntaxe de déclaration de variable de procédure stockée

DECLARE nama_variable tipedata(panjang) DEFAULT nilai;

Syntaxe de procédure stockée avec paramètres

Il existe trois modes pour les paramètres :

  • IN
    Forme par défaut du paramètre, où toutes les modifications dans la procédure stockée n'affectent pas le paramètre.

  • OUT
    Mode qui modifie la valeur du paramètre, puis la renvoie à l'appelant.

  • INOUT
    Mode combiné de IN et OUT.

Exemple de syntaxe pour définir une procédure stockée avec paramètres

DELIMITER //

CREATE PROCEDURE nama_procedure(
    [mode] [parameter] [tipe_data]
)
BEGIN
    query sql
END //

DELIMITER ;

Exemple de syntaxe d'appel d'une procédure stockée avec paramètres

CALL nama_procedure([nilai_parameter]);

Curseur

Un curseur est un objet dans la base de données utilisé pour stocker le traitement d'instructions SQL spécifiques, ou peut être considéré comme une variable contenant le résultat d'une requête qui contient plus d'une ligne ou d'un enregistrement.

Un curseur peut itérer sur autant de lignes de données dans la table. Il existe plusieurs propriétés d'un curseur :

  • Ne peut pas être mis à jour (lecture seule).
  • Le curseur ne se déplace que dans une seule direction (non défilable).
  • Il est déconseillé de mettre à jour la table référencée par le curseur car cela peut donner des résultats indésirables (insensible).

Syntaxe du curseur

Il y a plusieurs étapes dans la création d'un curseur :

1. Déclaration

Étape pour déclarer un curseur, avec la syntaxe :

DECLARE nama_cursor CURSOR FOR
pernyataan_SELECT;

2. Ouverture

Étape pour ouvrir ou activer le curseur, avec la syntaxe :

OPEN nama_cursor;

3. Récupération

Étape pour récupérer les données du curseur puis les stocker dans une variable, avec la syntaxe :

FETCH nama_cursor INTO daftar_variabel;

4. Fermeture

Étape pour désactiver le curseur, avec la syntaxe :

CLOSE nama_cursor;

Différence entre procédure stockée et curseur

La différence entre une procédure stockée et un curseur est que la procédure stockée ne contient que des instructions de déclaration de MySQL, tandis que le curseur contient le résultat de la requête ainsi qu'un pointeur sur le résultat de la requête.

Cela permet au curseur d'effectuer des commandes complexes que la procédure stockée ne peut pas faire. L'une d'elles est d'itérer sur les enregistrements.

W

Écrit par

Wilan

Contributeur permanent de Bali Island Tekno qui partage activement des connaissances sur la technologie, la programmation et le monde du génie logiciel.

Retour à l'accueil Mis à jour le : 5 juin 2026