• Aucun résultat trouvé

Td corrigé Exercice 1 pdf

N/A
N/A
Protected

Academic year: 2022

Partager "Td corrigé Exercice 1 pdf"

Copied!
1
0
0

Texte intégral

(1)

Ecrivez un bloc PL/SQL pour : a) Entrer un numéro de trajet ;

b) Afficher date, ville de départ, ville d’arrivée de ce trajet. S’il n’existe pas ce trajet, afficher un message d’erreur.

Conseil : Utiliser l’exception NO_DATA_FOUND

DECLARE

m_notraj NUMBER(3.0) ;

m_datetrajet DATE m_villedep CHAR(20) ; m_villearr CHAR(20) ; BEGIN

trajet.notraj := ‘&Numero_de_trajet’ ; SELECT datetrajet, villedep, villearr INTO m_datetrajet, m_villedep, m_villearr FROM trajet

WHERE notraj = m_notraj ;

DBMS_OUTPUT.PUT_LINE(‘Date du trajet:’|| m_datetrajet) ; DBMS_OUTPUT.PUT_LINE(‘Ville de départ:’|| m_villedep) ; DBMS_OUTPUT.PUT_LINE(‘Ville d’arrivée:’|| m_villearr) ; EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‘Il n’y a pas de chauffeur’) ; END ;

(2)

Faites un rapport pour afficher la liste des trajets pendant une période imprévue : a) Entrez une date de commencement et une date de terminaison de cette période,

b) Affichez les numéros de trajet, les dates de trajet, les villes de départ, les ville d’arrivée des trajets qui ont été effectués à cette date. Affichez aussi les nombres des voitures participées et les totaux des personnes transportées de ces trajets par chaque trajet.

DECLARE

m_notraj NUMBER(3,0) ;

m_datetrajet DATE m_villedep CHAR(20) ; m_villearr CHAR(20) ; nb_voitures INTEGER

nbperstraj INTEGER

de_jour DATE

a_jour DATE

BEGIN

de_jour := ‘&entrez_date_de_commencement’ ; a_jour := ‘&entrez_date_de_terminaison’ ; SELECT notraj, datetrajet, villedep, villearr

INTO m_notrajet, m_datetrajet, m_villedep, m_villearr FROM trajet

WHERE m_datetrajet BETWEEN de_jour AND a_jour ;

SELECT COUNT (v.nov) INTO nb_voitures FROM voiture v WHERE v.nov IN (

SELECT tv.nov

FROM tr_nov tv, trajet tr WHERE (tv.notraj = tr.notraj)

DBMS_OUTPUT.PUT_LINE(‘Numéros de trajet:’|| m_notraj) ; DBMS_OUTPUT.PUT_LINE(‘Date du trajet:’|| m_datetrajet) ; DBMS_OUTPUT.PUT_LINE(‘Villes de départ:’|| m_villedep) ; DBMS_OUTPUT.PUT_LINE(‘Villes d’arrivée:’|| m_villearr) ;

(3)

Ecrivez un bloc PL/SQL pour :

a) Définir une exception définie par l’utilisateur pour la règle : « il y a un seul chauffeur qui conduit une voiture au cours d’un trajet »,

b) Entrer un nouveau tuple de TR_NOV, c) Insérer ce tuple,

d) Validez cette règle. Si elle n’est pas valide, lancer l’exception et annuler toutes les actions appliquées

DECLARE

pas_un_chauffeur_une_voiture_un trajet EXCEPTION ;

notraj INTEGER;

nov CHAR(20);

nch NUMBER(3,0);

nbperstr NUMBER (2,0);

BEGIN

notraj := ’&numero_de_trajet’ ; nov := ‘&numero_de_voiture’ ; nch := ‘&numero_de_chauffeur’ ;

nbperstr := ‘&nombre_de_personnes_transportées’ ;

INSERT INTO tr_nov

VALUES (notraj, nov, nch, nbperstr);

EXCEPTION

WHEN pas_un_chaufeur_une_voiture_un_trajet THEN ROLLBACK [TO SAVEPOINT]

DBMS_OUTPUT.PUT_LINE(‘Il doit y avoir un seul chauffeur qui conduit une voiture au cours d’un trajet’) ;

(4)

Ecrivez un bloc PL/SQL pour valider la règle : «le nombre de passagers transportés pendant une journée doit être inférieur 50 »

 Affichez tous les trajets et les voitures qui transgressent cette règle (les numéros de trajet et les numéros de voiture).

DECLARE

nb_passagers_inferieur_50 EXCEPTION ;

m_notraj INTEGER ;

m_nov CHAR(12) ;

m_nbperstr NUMBER(2,0);

une_journee DATE

datetrajet DATE

plus_de_50 INTEGER;

BEGIN

une_journee := TRIM(’&entrez_une_date’)

SELECT MAX(COUNT(tv.m_nbperstr)) INTO plus_de_50 FROM tr_nov tv, trajet tr

WHERE (tv.nbperstr = tr.nbperstr) AND (to_char(tr.datetrajet,’DD’) = une_journee) GROUP BY tv.nov

IF plus_de_50 >= 50 THEN SELECT tv.nov INTO m_nov FROM tr_nov tv, trajet tr

WHERE (tv.nbperstr = tr.nbperstr) AND (to_char(tr.datetrajet,’DD’) = une_journee) GROUP BY tv.nov

HAVING COUNT(tv.nbperstr) >= plus_de_50;

DBMS_OUTPUT.PUT_LINE(‘Trajet no:’||m_notraj);

DBMS_OUTPUT.PUT_LINE(‘Voiture no:’||m_nov);

ELSE plus_de_50 < 50

RAISE nb_passagers_inferieur_50 END IF ;

EXCEPTION

WHEN nb_passagers_inferieur_50 THEN

DBMS_OUTPUT.PUT_LINE(‘Le nombre de passagers transportés cette journée est inférieur à 50 pour toutes les voitures et tous les trajets’) ;

(5)

Faites la synthèse des trajets pendant une année pour l’analyse statistique les nombre des trajets effectués par mois et ville de départ:

a) Entrer une année ,

b) Afficher un rapport comme suit :

DECLARE

une_annee NUMBER(4)

un_mois NUMBER(2)

villedep CHAR(20)

nbtrajet NUMBER(2)

BEGIN

une_annee := TRIM(‘&Entrez_une_annee’) ;

DBMS_OUT_PUT.PUT(‘SYTHESE DES TRAJETS’) ; DBMS_OUT_PUT.NEW_LINE;

DBMS_OUT_PUT.PUT_LINE(‘Année: ‘||TO_CHAR(une_annee, ‘YYYY’);

DBMS_OUT_PUT.NEW_LINE;

DBMS_OUT_PUT.PUT(‘VILLE DEPART’) ;

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois, ‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois,‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois,‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois,‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois,‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois, ‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois,‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois, ‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois,‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois, ‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois,‘MM’);

DBMS_OUT_PUT.PUT(TO_CHAR(un_mois, ‘MM’);

DBMS_OUT_PUT.NEW_LINE;

DBMS_OUT_PUT.PUT(TO_CHAR(villedep)) ; DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.PUT(TO_CHAR(nbtrajet,’99’);

DBMS_OUT_PUT.NEW_LINE;

Références

Documents relatifs

Par contre, bien qu’ayant une position confortable de leader local (plus de 70 % de parts de marchés) et face à des nouveaux arrivants, Lesieur- Cristal opte pour une

Objectif : Déterminer la puissance minimale théorique fournie par le moteur pneumatique pour avoir une puissance de sortie de 256 watts (puissance préconisée

2) Dans un premier temps, nous allons voir I / la valeur positive, et dans un second temps II/ la valeur négative. 3) Nous verrons dans un premier temps les valeurs positives

Calculer la tension du câble (on néglige les frottements). En supposant que la résistance de l’air soit modélisée par une force horizontale d’intensité Fair = 1000 N, et que

6) En déduire la valeur de la capacité de chacun des trois condensateurs que l'on monte en triangle pour relever le facteur de puissance de

Pour 5 heures de location, cocher la bonne réponse parmi les affirmations suivantes :.. □ L’entreprise TOPCLEAN est

- Détermine le point de concours des droites d’action des 3 forces pour que le volet soit en équilibre.. - Construis le dynamique des 3 forces pour déterminer les intensités à

- Cliquez sur le Menu « Démarrer » =&gt; Panneau de Configuration =&gt; Comptes d’utilisateurs =&gt; Cliquez sur « Créer un nouveau Compte » =&gt; Tapez le nom et choisissez le