PREPARE requete FROM @sql;
EXECUTE requete;
END|
DELIMITER ;
CALL select_race_dynamique('WHERE espece_id = 2'); -- Affichera les
races de chats
CALL select_race_dynamique('ORDER BY nom LIMIT 2'); -- Affichera les
deux premières races par ordre alphabétique de leur nom
Il va sans dire que ce genre de construction dynamique de requêtes peut poser d'énormes problèmes de sécurité si l'on ne prend
pas de précaution.
Par ailleurs, il n'est pas possible de construire une requête préparée à partir d'une variable locale. Il est donc nécessaire d'utiliser
une variable utilisateur.
L'utilisation des requêtes préparées n'est pas permise dans un trigger.
En résumé
Un gestionnaire d'erreur permet d'intercepter un ou plusieurs types d'erreurs (ou avertissements) SQL et de déclencher
une série d'instructions en cas d'erreur.
Les erreurs interceptées peuvent être représentées par un numéro d'erreur MySQL, un identifiant SQLSTATE ou une
CONDITION.
Il existe trois conditions prédéfinies : SQLEXCEPTION (pour tout type d'erreur SQL), SQLWARNING (pour tout
avertissement) et NOT FOUND (en cas de FETCH sur un jeu de résultats vide ou épuisé).
Un curseur est une structure qui permet de parcourir un jeu de résultats
Dans un bloc d'instructions, on déclare d'abord les variables locales, puis les conditions, suivies des curseurs, et pour
finir les gestionnaires d'erreurs. Toutes ces déclarations doivent être faites avant les instructions du bloc.
Partie 5 : Sécuriser et automatiser ses actions
309/414
www.openclassrooms.com
Précédent

- 309/413

Suivant