Pb de trigger sous SQL+, Oracle10g
Bonjour,
J'ai un petit soucis avec un trigger que j'ai créé.
SQL+ me renvoie le resultat suivant :
Avertissement : Déclencheur créé avec erreurs de compilation.
Ce trigger est sensé vérifié si un étudiant rempli les prérequis pour s'inscrire dans un module, c'est à dire, il doit avoir la moyenne attendue dans le module précédent et il faut qu'il y ait encore de la place.
J'ai beau chercher, je ne vois pas d'où vient le problème.
Je travail sous xp/virtualbox 2.2 et Oracle 10g.
Si quelqu'un pouvait me donner un petit coup de main, ça me serait très utile.
D'avance merci à tous.
Voici le code de mon trigger:
Code:
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
| create or replace trigger verif_valid_prereq
before update on inscription
for each row
declare
v_num number :=0;
v_codm varchar2(8);
v_compt number;
v_moy number := 0;
begin
select :new.numetud into v_num from inscription;
select codmodprereq into v_codm from prerequis
where codmodprereq = :new.codmod;
select count(codexam) into v_compt from examen
where codmod = v_codm;
if ((select count(note) from resultat
where numetud = v_num and codmod = v_codm) = v_compt) then
select round(avg(note),2) into v_moy from resultat
where numetud = v_num and codmod = v_codm;
if ((select noteprereq from prerequis
where codmodprereq = v_codm)<v_moy )
raise erreur;
end if;
else raise erreur;
end if;
exception
when erreur then Raise_application_error(-20114,
'Cet etudiant ne remplie pas les conditions pour s inscrire au
module '||:new.codmod);
end;
/ |
Desole de vous avoir ennuyer avec mon pb!!!
Bonsoir à tous,
Encore une fois merci pour vos reponse.
Je voudrais juste faire un petit commentaire concernant la reponse de mnitu.
Tu ecris :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Si tu ne vois pas où est l'erreur avec ce morceau de code
Code:
12345 |
IF ((SELECT count(note) FROM resultat
WHERE numetud = v_num AND codmod = v_codm) = v_compt) then
il faut reviser un peu la syntaxe du PL/SQL avant de continuer à écrire des programmes. |
|
Alors que si tu avais lu correctement mon message precedent, tu aurais pu lire :
Code:
1 2 3 4 5
|
Bonsoir et merci pour vos reponses,
Concernant le then manquant, je m'en étais rendu compte et l'avais modifié mais aucun changement.
/ |
Je pensais ma reponse suffisamment claire mais apparemment j'étais dans l'erreur (encore, ça devient une habitude!!).
Pour info, je debute en pl/sql mais cela ne t'interesses pas, j'imagine.
Je vais donc retourner à mon apprentissage en espérant ne pas tomber trop souvent sur des personnes qui fonctionnent à ta manière, c'est à dire, en envoyant les personnes qui demandent de l'aide trouver ce qu'elles cherchent dans des ouvrages.
Enfin, bref, je ne vais pas m'étendre plus longtemps sur le sujet.
Merci encore à tous ceux qui ont tenté de m'aider.
Genkilord