de la base de données, au même titre qu'une table par exemple.
Notons encore qu'il n'est pas possible de modifier une procédure directement. La seule façon de modifier une procédure existante
est de la supprimer puis de la recréer avec les modifications.
Il existe bien une commande ALTER PROCEDURE, mais elle ne permet de changer ni les paramètres, ni le corps de la
procédure. Elle permet uniquement de changer certaines caractéristiques de la procédure, et ne sera pas couverte dans
ce cours.
Avantages, inconvénients et usage des procédures stockées
Avantages
Les procédures stockées permettent de réduire les allers-retours entre le client et le serveur MySQL. En effet, si l'on englobe
en une seule procédure un processus demandant l'exécution de plusieurs requêtes, le client ne communique qu'une seule fois
avec le serveur (pour demander l'exécution de la procédure) pour exécuter la totalité du traitement. Cela permet donc un certain
gain en performance.
Elles permettent également de sécuriser une base de données. Par exemple, il est possible de restreindre les droits des
utilisateurs de façon à ce qu'ils puissent uniquement exécuter des procédures. Finis les DELETE dangereux ou les UPDATE
inconsidérés. Chaque requête exécutée par les utilisateurs est créée et contrôlée par l'administrateur de la base de données par
l'intermédiaire des procédures stockées.
Cela permet ensuite de s'assurer qu'un traitement est toujours exécuté de la même manière, quelle que soit l'application/le
client qui le lance. Il arrive par exemple qu'une même base de données soit exploitée par plusieurs applications, lesquelles
peuvent être écrites avec différents langages. Si on laisse chaque application avoir son propre code pour un même traitement, il
est possible que des différences apparaissent (distraction, mauvaise communication, erreur ou autre). Par contre, si chaque
application appelle la même procédure stockée, ce risque disparaît.
Inconvénients
Les procédures stockées ajoutent évidemment à la charge sur le serveur de données. Plus on implémente de logique de
traitement directement dans la base de données, moins le serveur est disponible pour son but premier : le stockage de données.
Par ailleurs, certains traitements seront toujours plus simples et plus courts à écrire (et donc à maintenir) s'ils sont développés
dans un langage informatique adapté. A fortiori lorsqu'il s'agit de traitements complexes. La logique qu'il est possible
d'implémenter avec MySQL permet de nombreuses choses, mais reste assez basique.
Enfin, la syntaxe des procédures stockées diffère beaucoup d'un SGBD à un autre. Par conséquent, si l'on désire en changer, il
faudra procéder à un grand nombre de corrections et d'ajustements.
Conclusion et usage
Comme souvent, tout est question d'équilibre. Il faut savoir utiliser des procédures quand c'est utile, quand on a une bonne
raison de le faire. Il ne sert à rien d'en abuser.
Pour une base contenant des données ultrasensibles, une bonne gestion des droits des utilisateurs couplée à l'usage de
procédures stockées peut se révéler salutaire.
Pour une base de données destinée à être utilisée par plusieurs applications différentes, on choisira de créer des procédures
pour les traitements généraux et/ou pour lesquels la moindre erreur peut poser de gros problèmes.
Pour un traitement long, impliquant de nombreuses requêtes et une logique simple, on peut sérieusement gagner en performance
en le faisant dans une procédure stockée (a fortiori si ce traitement est souvent lancé).
À vous de voir quelles procédures sont utiles pour votre application et vos besoins.
En résumé
Une procédure stockée est un ensemble d'instructions que l'on peut exécuter sur commande.
Une procédure stockée est un objet de la base de données stocké de manière durable, au même titre qu'une table. Elle
n'est pas supprimée à la fin de la session comme l'est une requête préparée.
On peut passer des paramètres à une procédure stockée, qui peuvent avoir trois sens : IN (entrant), OUT (sortant) ou
INOUT (les deux).
SELECT ... INTO permet d'assigner des données sélectionnées à des variables ou des paramètres, à condition que
le SELECT ne renvoie qu'une seule ligne, et qu'il y ait autant de valeurs sélectionnées que de variables à assigner.
Les procédures stockées peuvent permettre de gagner en performance en diminuant les allers-retours entre le client et le
serveur. Elles peuvent également aider à sécuriser une base de données et à s'assurer que les traitements sensibles soient
Partie 5 : Sécuriser et automatiser ses actions
273/414
www.openclassrooms.com
Précédent

- 273/413

Suivant