Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PLS-00103:Auf das Symbol END gestoßen, wenn + &=usw. erwartet wurde

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