Bonjour à tous, je vous explique mon probleme:
J'ai 3 tables :
etudiant (numetud,nom, prenom, datenaiss, civilite, patronyme, numinsee, adresse)
inscription (numetud, codmod,dainsc,numtd)
resultat (numetud,codmod,codexam,note)

Je travail avec l'application Forms 10g et la table resultat contient 1 case (élément texte) qui est mention.

J'ai créée une vue moyenne qui m'affiche la moyenne generale d'un etudiant grace à son numetud. Elle marche correctement est la moyenne s'affiche dans la colonne moy. Voici la vue:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
CREATE VIEW MOYENNE AS SELECT e.numetud, e.nom, r.codmod, 
round(avg(r.note),2) moy FROM etudiant e, resultat r 
WHERE e.numetud = r.numetud GROUP BY e.numetud, e.nom;
 J'ai créée la fonction mention d'un etudiant. Voici la fonction qui marche correctement:
Puis , grace a la moyenne j'affiche la mention, voici son script:

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
 
CREATE OR REPLACE FUNCTION mention (v_numetud number, v_codmod number) RETURN varchar2 IS 
 
v_moyenne decimal;
 
begin
 
SELECT round(avg(r.note),2) AS moy INTO v_moyenne FROM resultat r WHERE r.numetud = v_numetud
AND r.codmod = v_codmod GROUP BY r.numetud, r.codmod;	
 
	IF v_moyenne < 10 then
		RETURN('Ajourne');
	end IF;
 
	IF  v_moyenne >= 10 AND v_moyenne < 12 then
		RETURN('Passable');
	end IF;
 
	IF  v_moyenne >= 12 AND v_moyenne < 14 then
		RETURN('Assez bien');
	end IF;
 
	IF  v_moyenne >= 14 AND v_moyenne < 16 then
		RETURN('Bien');
	end IF;
 
	IF  v_moyenne >= 16 AND v_moyenne < 18 then
		RETURN('Tres bien');
	end IF;
 
	IF  v_moyenne >= 18 AND v_moyenne < 20 then
		RETURN('Excellent');
	end IF;
 
end;
/
Mon probleme est le suivant: j'ai créé un bouton "resultat de l'etudiant" et je veux qu'en inserant le numetud et le codmod de la table resultat et en clickan sur le bouton que j'obtienne la suite des infos sur l'etudiant (càdire codexam,note) ainsi que la mention qui saffiche automatiquement. Dans le code PL/SQL "When-Button-Pressed" du bouton j'ai mis le script suivant qu'il faut completer:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    begin
select numetud, codmod, codexam, note into :resultat.numetud, :resultat.codmod, :resultat.codexam, :resultat.note
from resultat where numetud = :resultat.numetud and codmod= :resultat.codmod;      
 
 
-- Par la suite je ne sais pas quel procédé utiliser pour faire intervenir la 
-- moyenne et mention.
 
    exception
when no_data_found then
message('Invalid student id: please enter valid id.');
raise form_trigger_failure;
end;
Faut-il mettre ma fonction mention dans une unité de programme ou seulement l'executer dans isqlplus ?

Quequ'un à t-il une solution svp ?

Merci pour votre aide.