Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

PLS-00103:Encontrou o símbolo END ao esperar + &=etc


Sua cláusula final deve usar ELSE em vez 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;

ATUALIZAÇÃO

Dar conselhos sobre como solucionar isso não é fácil (já que é uma questão de preferência pessoal); coisas que eu costumo tentar são
  • limite o exemplo (no seu caso, livre-se de todas as cláusulas adicionais no CASE )
  • reescreva a parte ofensiva da consulta do zero
  • copie uma consulta semelhante que funcione e altere essa consulta gradualmente para se parecer com a consulta incorreta até encontrar o erro