Bonjour à Tous !
Je suis nouveau ici dans ce Forum, et malheureusement ma première discussion sera pour poster une question et ne pas pour y répondre.
En fait, j'ai un problème au niveau d'une procédure PLSQL.
J'ai une question pour construire une Base de donnée et de la remplir avec
des proportions données . alors la, y'a pas mal de solutions pour y faire,
moi j'ai choisi de travailler avec une procédure PLSQL et tester pour chaque
champ
Voilà la question déjà :
et voilà la procédure que j'ai crée :
Construire la base de données suivante :
Etudiants (No-etu, Nom-etu, Pnom-etu, Ville, Promotion, Date-nais, Commentaire)
Promotions (No-promo, Libelle-promo, Responsable, Niveau, Commentaire)
Remplir cette base de données à l’aide d’un programme PL/SQL, avec une proportion « contrôlée »
d’étudiants dans différentes villes et différentes promotions.
Les proportions visées sont :
- Pour Ville : Dijon (40%), Chenôve ( 25%), Talant (20%), Quetigny (10%), Chevigny (4%),
Bressey (1%)
- Pour Promotion : L1 MIE (27%), L1 PC (20%), L2 MIE (15%), L2 PC (10%), L2 MP (1%), L3
Chimie (5%), L3 Info (8%), L3 Elec (2%), L3 Méca (2%), L3 Phys (3%), L3 Math (7%)
alors j'ai crée cette procédure qui teste pour les champs promotion et ville
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 set serveroutput on; CREATE OR REPLACE PROCEDURE Insertion AS BEGIN v_ville varchar(30) v_promotion varchar(30) FOR i IN 1..500 LOOP pct := DBMS_RANDOM.VALUE(0, 100); IF pct < 40 then v_ville := 'Dijon'; ELSIF pct < 25 then v_ville := 'Chenôve'; ELSIF pct < 20 then v_ville := 'Talant'; ELSIF pct < 10 then v_ville := 'Quetigny'; ELSIF pct < 4 then v_ville := 'Chevigny'; ELSE v_ville := 'Bressey'; END IF; pct := DBMS_RANDOM.VALUE(0, 100); IF pct < 27 then v_promotion := 'L1 MIE'; ELSIF pct < 20 then v_promotion := 'L1 PC'; ELSIF pct < 15 then v_promotion := 'L2 MI2'; ELSIF pct < 10 then v_promotion := 'L2 PC'; ELSIF pct < 1 then v_promotion := 'L2 MP'; ELSIF pct < 5 then v_promotion := 'L3 Chimie'; ELSIF pct < 8 then v_promotion := 'L3 Info'; ELSIF pct < 2 then v_promotion := 'L3 Elec'; ELSIF pct < 2 then v_promotion := 'L3 Méca'; ELSIF pct < 3 then v_promotion := 'L3 Phys'; ELSE v_promotion := 'L3 Math'; END IF; INSERT INTO ETUDIANT(No_etu,Nom_etu,Pnom_etu,Ville,Promotion,Date_nais,Commentaire) VALUES (i,Nom_etu,Pnom_etu,v_ville,v_promotion,Date_nais,Commentaire); END LOOP; --Validation COMMIT; END;
les proportions données.
Alors le problèmes c'est que je ne c'est pas si c'est correcte ma solution ou
non ? ainsi que je ne sais pas si je dois entrer tout les variables dans l'entête
de la procédure ou juste les variables v_ville et v_promotion que je vais les
tester après ? aussi , est ce que je dois faire une INSERT INTO PROMOTION
en dessous de INSERT INTO ETUDIANT ?
Merci de me donner une solution , je suis vraiment coincé .
Merci d'avance.
Partager