/* Je n'ai pas de machine virtuelle possédant SQL Developper, ce qui fait * que je n'ai pas pu tester mon code. * * C'est pourquoi j'espère que ça sera pris en compte et que ce qui est noté * est la logique du code et non l'exactitude scolaire bête et méchante. */ DECLARE CURSOR notes_c IS SELECT s_lname, s_fname, s_grade FROM students; new_note NUMBER; BEGIN FOR notes_r IN notes_c LOOP new_note := CASE notes_r.s_grade -- all valid cases. WHEN 'A+' THEN 20 WHEN 'A' THEN 19 WHEN 'A-' THEN 18 WHEN 'B+' THEN 16.5 WHEN 'B' THEN 15 WHEN 'B-' THEN 13.5 WHEN 'C+' THEN 12 WHEN 'C' THEN 10.5 WHEN 'C-' THEN 9 WHEN 'D+' THEN 7.5 WHEN 'D' THEN 5 WHEN 'D-' THEN 4.5 WHEN 'F+' THEN 3 WHEN 'F' THEN 1.5 WHEN 'F-' THEN 0 -- If there isn't any valid note, we raise an exception. ELSE RAISE_APPLICATION_ERROR(-20202, 'Value isn''t correct'); END; DBMS_OUTPUT.PUT_LINE(notes_r.s_lname || ' ' || notes_r.s_fname || ' : ' || new_note); END LOOP; END;