Вашата последна клауза трябва да използва ELSE
вместо WHEN
:
DECLARE
v_grade CHAR(1) := 'C';
appraisal VARCHAR(20);
BEGIN
appraisal :=
CASE v_grade
WHEN 'A' THEN 'Excellent'
WHEN 'B' THEN 'Very Good'
WHEN 'C' THEN 'Good'
ELSE 'No such grade'
END;
DBMS_OUTPUT.PUT_LINE('Grade: '||v_grade||', Appraisal '||appraisal);
END;
АКТУАЛИЗАЦИЯ
Да ви дадем съвет как да отстраните това не е лесно (тъй като до голяма степен е въпрос на лични предпочитания); неща, които обикновено опитвам са
- стеснете примера (във вашия случай се отървете от всички допълнителни клаузи в
CASE
) - пренапишете обидната част от заявката от нулата
- копирайте подобна заявка, която работи и променяйте тази заявка постепенно, за да прилича на обидната заявка, докато не срещна грешката