La société de transport de personnes TOPCHRONO souhaite mettre en place une plateforme extranet à destination des particuliers. L’application proposera des services similaires à ceux proposés par la plateforme UBER :
Implémenter la fonction stockée tarifCommission(distance INT) AS DECIMAL qui retourne la commission pratiquée en fonction de la longueur d’un trajet :
CREATE FUNCTION tarifCommission(distance INT) RETURNS DECIMAL DETERMINISTIC BEGIN RETURN ( SELECT tarif FROM Commission WHERE distance >= min AND distance < max ) ; END$$
Implémenter la fonction stockée tarifChauffeur(numChauffeur INT, distance INT) qui retourne le tarif* pratiqué par un chauffeur en fonction de la longueur d’un trajet.
*Remarque : partie fixe + partie variable selon la distance
Coder la procédure stockée tarifChauffeurs(distance INT) qui affiche le tarif pratiqué par l’ensemble des chauffeurs en fonction de la longueur d’un trajet.
Coder la procédure stockée validerInscription(numChauffeur INT) permettant de valider(accepter) l’inscription d’un chauffeur.
Remarques :
Remarque sur le type d’une personne : une personne est soit « Passager » (par défaut) soit « Inscription » pour une personne qui a fait une demande d’inscription pour devenir chauffeur sans être déjà passager. Elle devient « Chauffeur » si sa demande d'inscription a été acceptée. Un passager qui demande à devenir chauffeur est un « PassagerInscription ». Si sa demande d’inscription pour devenir chauffeur est acceptée elle devient « ChauffeurPassager».
Exemple d’utilisation de WHILE pour parcourir un jeu d’enregistrements :
DECLARE curseur CURSOR FOR ( SELECT champ1, champ2 FROM table1 … ) ; -- lignes à parcourir DECLARE i INT ; -- compteur pour parcourir les lignes SELECT count(*) INTO @Nb FROM table1 … ; -- comptage du nombre de lignes à parcourir i = 0 WHILE i < Nb DO FETCH curseur INTO var1, var2 ; -- récupère le contenu de la ligne courante et passé à la suivante …. END WHILE ;