Twoja ostatnia klauzula powinna zawierać ELSE
zamiast 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;
AKTUALIZUJ
Udzielanie porad, jak rozwiązać ten problem, nie jest łatwe (ponieważ jest to w dużej mierze kwestia osobistych preferencji); rzeczy, których zwykle próbuję, to
- zawęź przykład (w twoim przypadku pozbądź się wszystkich dodatkowych klauzul w
CASE
) - przepisz obraźliwą część zapytania od zera
- skopiuj podobne zapytanie, które działa i stopniowo je zmieniaj, aby przypominało obraźliwe zapytanie, aż napotkam błąd