Ihre letzte Klausel sollte ELSE
verwenden statt 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;
AKTUALISIEREN
Es ist nicht einfach, Ihnen Ratschläge zur Fehlerbehebung zu geben (da dies größtenteils eine Frage der persönlichen Vorlieben ist). Dinge, die ich normalerweise versuche, sind
- grenzen Sie das Beispiel ein (entfernen Sie in Ihrem Fall alle zusätzlichen Klauseln im
CASE
) - Schreiben Sie den anstößigen Teil der Abfrage von Grund auf neu
- Kopieren Sie eine ähnliche Abfrage, die funktioniert, und ändern Sie diese Abfrage schrittweise so, dass sie der problematischen Abfrage ähnelt, bis ich auf den Fehler stoße