Oracle
 sql >> Base de données >  >> RDS >> Oracle

PLS-00103 :A rencontré le symbole END lors de l'attente de + &=, etc.

Votre clause finale doit utiliser ELSE au lieu de 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;

MISE À JOUR

Vous donner des conseils sur la façon de résoudre ce problème n'est pas facile (puisque c'est en grande partie une question de préférence personnelle); les choses que j'essaie habituellement sont

  • affiner l'exemple (dans votre cas, supprimez toutes les clauses supplémentaires dans le CASE )
  • réécrire la partie incriminée de la requête à partir de zéro
  • copier une requête similaire qui fonctionne et modifier progressivement cette requête pour qu'elle ressemble à la requête incriminée jusqu'à ce que je rencontre l'erreur