Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 73 minAvancé

Méthodologie d'examen

Par Josselyn C., prof de BTS SIO. Mis à jour le .

7.1 Comment les procedures et triggers tombent a l'examen

Les sujets de BTS SIO SLAM presentent generalement :

  • Un schema relationnel (MCD/MLD ou directement les tables SQL).
  • Un cahier des charges ou des regles de gestion.
  • Des questions du type : "Ecrire une procedure stockee qui..." ou "Ecrire un trigger qui...".

Les formes les plus frequentes :

  1. Ecrire une procedure stockee a partir d'un besoin metier decrit en francais.
  2. Ecrire un trigger a partir d'une regle de gestion ("A chaque vente, le stock doit diminuer automatiquement").
  3. Completer une procedure ou un trigger dont une partie du code est fournie.
  4. Identifier les erreurs dans un code donne.
  5. Expliquer le comportement d'un trigger ou d'une procedure donne.

7.2 Les erreurs classiques

ErreurConsequenceSolution
Oublier DELIMITER // et DELIMITER ;Erreur de syntaxe, la procedure n'est pas creeeToujours ecrire DELIMITER avant et apres
Confondre IN et OUTLe parametre ne retourne pas la valeur attendueIN = entree, OUT = sortie, toujours se poser la question : "qui fournit la valeur ?"
Confondre NEW et OLDLe trigger lit les mauvaises valeursNEW = nouvelles valeurs, OLD = anciennes. Tableau de reference au 5.3
Utiliser NEW dans un trigger DELETEErreur a l'executionNEW n'existe pas en DELETE, utiliser OLD
Utiliser OLD dans un trigger INSERTErreur a l'executionOLD n'existe pas en INSERT, utiliser NEW
Oublier FOR EACH ROWErreur de syntaxeToujours l'ecrire, c'est obligatoire en MySQL
Oublier RETURNS dans CREATE FUNCTIONErreur de syntaxeUne fonction doit toujours declarer son type de retour
Oublier RETURN dans le corps d'une fonctionErreur a l'executionLe corps doit contenir au moins un RETURN
Nommer un parametre comme une colonneLa clause WHERE ne filtre plus correctementPrefixer les parametres par p_
Placer DECLARE apres une instructionErreur de syntaxeTous les DECLARE doivent etre au debut du bloc BEGIN
Oublier END IF, END LOOP, END WHILEErreur de syntaxeChaque structure de controle a son END

7.3 Checklist avant de rendre sa copie

  1. Le DELIMITER // est present avant la creation, DELIMITER ; apres.
  2. Chaque parametre a le bon mode : IN, OUT ou INOUT.
  3. Les noms de parametres ne sont pas identiques aux noms de colonnes.
  4. Les DECLARE sont au debut du bloc BEGIN (variables, puis curseurs, puis handlers).
  5. Chaque IF a son END IF, chaque LOOP a son END LOOP, etc.
  6. Les triggers utilisent NEW et OLD correctement selon l'evenement.
  7. FOR EACH ROW est present dans le CREATE TRIGGER.
  8. Le SIGNAL SQLSTATE utilise le code '45000' (avec les apostrophes).
  9. Les transactions ont un COMMIT et un ROLLBACK.
  10. La procedure est testable : on peut ecrire un CALL avec des valeurs concretes.

Chapitre terminé !

Tu as lu ce chapitre jusqu'au bout. Passe au suivant tant que c'est frais.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Exercices d'examen corrigésRevoir le sommaire du cours