SQL
Procédure stockée
Introduction
Longtemps reproché à MySQL, depuis la version 5 les procédures stockées sont disponible maintenant comme ses grand frères Oracle et DB2.

Ces procédures stockées permettent d'avoir sur le serveur de base de donnée des procédures pouvant être appelée par les applicatifs. Evitant aux programmeurs, d'avoir leur propre code SQL. Avantage :
  • Séparation des couches.
  • Le code SQL est précompilé, on accéllère donc le programme.
  • on réduit la consommation de la bande passante avec le serveur.
Créer une procédure stockée
mysql> create procedure show_users() select * from user order by name; mysql>call show_users;
Avec paramàtre entrant (IN) :
mysql> create procedure show_user(IN nid int) select * from user where id=nid; mysql>call show_user(1); mysql> create procedure show_user(IN name varchar(50)) select * from user where nom=name; mysql>call show_user("TRUC");
Voir une procédure stockée
mysql> show create procedure show_user;
Supprimer une procédure stockée
mysql> drop procedure show_user;
Procédure avec paramètre de sortie :
CREATE PROCEDURE procSortie (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM matable; END //
Appeler Procédure et paramètre de sortie :
call procSortie(@a); select @a;
Fonction stockée
Les fonctions retournent obligatoirement un paramètre à la différence des procédures.
Fonction :
delimiter // CREATE FUNCTION getLastInstanceID() RETURNS INTEGER BEGIN DECLARE i_num_cmd INTEGER; DEcLARE c_num_cmd CURSOR FOR select sequenceNumber from matable where creationDay=date_format(sysdate(),'%Y%m%d') order by sequenceNumber limit 1; OPEN c_num_cmd; FETCH c_num_cmd INTO i_num_cmd; CLOSE c_num_cmd; return i_num_cmd; END; //
Appeler une fonction :
select getLastInstanceId;
Supprimer une fonction :
drop function if exists getLastInstanceId;
Trigger
Les triggers sont des actionneurs(proche du Listener en Java) déclenchés sur les événements (INSERT,DELETE,UPDATE), avant ou aprè.
Créer un trigger :
On passe le nom en majuscule avant l'insert
mysql> create trigger event_insert_user before insert on user for each row set new.nom=UPPER(new.nom);
Imprimer
Notez cette page

S'il vous plait, prenez un moment pour remplir ce formulaire pour nous aider à mieux vous servir.

12345

    :: Ajouter aux favoris :: Contact