sql >> Base de Datos >  >> RDS >> Oracle

PLS-00103:se encontró el símbolo FIN al esperar + &=etc.

Su cláusula final debe usar ELSE en lugar 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;

ACTUALIZAR

Darle consejos sobre cómo solucionar este problema no es fácil (ya que es en gran medida una cuestión de preferencia personal); las cosas que suelo probar son

  • limite el ejemplo (en su caso, deshágase de todas las cláusulas adicionales en el CASE )
  • reescribe la parte ofensiva de la consulta desde cero
  • copie una consulta similar que funcione y cambie esa consulta gradualmente para parecerse a la consulta infractora hasta que encuentre el error