Bonjour je suis débutant en SQL et j'aurais besoin d'aide...
Je dois concevoir une fonction qui prend un valeur dans une table et retourne la réponse dans une autre colonne de la même table.
Le code de ma table:
Ce qu'il faut faire est prendre la note et donner la cote correspondante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE Inscription (codePermanent CHAR(12) NOT NULL, sigle CHAR(7) NOT NULL, noGroupe INTEGER NOT NULL, codeSession INTEGER NOT NULL, dateInscription DATE NOT NULL, dateAbandon DATE, note INTEGER, cote CHAR(1), CONSTRAINT CléPrimaireInscription PRIMARY KEY (codePermanent,sigle,noGroupe,codeSession), CONSTRAINT CERefGroupeCours FOREIGN KEY (sigle,noGroupe,codeSession) REFERENCES GroupeCours, CONSTRAINT CECodePermamentRefEtudiant FOREIGN KEY (codePermanent) REFERENCES Etudiant ) /
Et faire un update dans la table avec la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE FUNCTION fCotePourNote(note_ INTEGER) RETURN CHAR; BEGIN CASE WHEN note_ >=90 THEN cote_ := 'A'; WHEN note_ >=80 AND note_ < 90 THEN cote_ := 'B'; WHEN note_ >=70 AND note_ < 80 THEN cote_ := 'C'; WHEN note_ >=60 AND note_ < 70 THEN cote_ := 'D'; WHEN note_ >=0 AND note_ < 60 THEN cote_ := 'E'; ELSE cote_ := NULL; END CASE; RETURN cote_ END; /
Malheureusement je suis incapable de faire fonctionner ma fonction...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 UPDATE Inscription SET cote = fCotePourNote(SELECT note FROM Inscription WHERE codePermanent = 'TREJ18088001' AND sigle = 'INF1110' AND noGroupe = 20 AND codeSession = 32003) WHERE codePermanent = 'TREJ18088001' AND sigle = 'INF1110' AND noGroupe = 20 AND codeSession = 32003 /
Merçi d'avance pour votre aide
Partager