PL/SQL trigger Déclencheur créé avec erreur de compilation.
Fermé
justeh07
Messages postés1Date d'inscriptionlundi 25 novembre 2013StatutMembreDernière intervention25 novembre 2013
-
25 nov. 2013 à 11:11
je débute à PL/SQL c'est mon premier trigger. il est question de créer un trigger <vérifier_mat> qui contrôle, lors de la saisie de la note d'un étudiant, que la matière est bien enseignée dans la classe où il se trouve sinon renvoie le message 'matière non enseingnée' voici les table
CREATE TABLE noter /* elle ne contient encore aucune données */
INSERT INTO dispenser (code_class, code_mat, coeff)
VALUES ('2A','algo', '5');
VALUES ('2A','bdd', '5');
VALUES ('2A','acsi', '2');
VALUES ('3A','alg', '4');
VALUES ('3A','bd', '4');
VALUES ('3A','acs', '2');
VALUES ('4A','res', '3');
VALUES ('4A','java', '4');
VALUES ('4A','web', '5');
VALUES ('5A','map', '4');
VALUES ('5A','math', '4');
VALUES ('5A','prog', '4');
voici mon trigger :
show errors;
create or replace trigger vérifier_mat
before insert or update on noter
for each row
declare
matri_etudiant VARCHAR(6);
code_matiere_n VARCHAR(6);
note_etudiant NUMBER(4);
code_classe VARCHAR(2);
code_matiere_d VARCHAR(6);
begin
select *
into code_matiere_n
from matiere ma dispenser di
where code_matiere_n = :new.code_mat
and matri_etudiant = :new.matri_et
and note_etudiant = :new.note_et
and ma.code_mat=di.code_mat
and code_classe=:new.code_class;
exception
when no_data_found then
dbms_output.put_line('Pas de données.');
end;
if (code_class=2A and (code_mat<>algo or code_mat<>bdd or code_mat<>acsi ) ) then
raise_application_error(-20001,'cette matière n'est pas enseigner dans cette
classe, donc vous ne pouver pas attibuer une note à un étudiant.' );
end if;
if (code_class=3A and (code_mat<>alg or code_mat<>bd or code_mat<>acs) ) then
raise_application_error(-20001,'cette matière n'est pas enseigner dans cette
classe, donc vous ne pouver pas attibuer une note à un étudiant.');
end if;
if (code_class=4A and (code_mat<>res or code_mat<>web or code_mat<>java)) then
raise_application_error(-20001,'cette matière n'est pas enseigner dans cette
classe, donc vous ne pouver pas attibuer une note à un étudiant.');
end if;
if (code_class=5A and (code_mat<>map or code_mat<>math or code_mat<>prog)) then
raise_application_error(-20001,'cette matière n'est pas enseigner dans cette
classe, donc vous ne pouver pas attibuer une note à un étudiant.' );
end if;
après exécution de mon trigger on me dit qu'il a été crée avec des erreurs de compilation
aussi, j'arrive pas à insérer des donnée dans ma table noter
A voir également:
PL/SQL trigger Déclencheur créé avec erreur de compilation.