Oracle
 sql >> Database >  >> RDS >> Oracle

PLS-00103:incontrato il simbolo FINE quando si aspettava + &=ecc

La tua clausola finale dovrebbe usare ELSE invece di 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;

AGGIORNAMENTO

Darti consigli su come risolvere questo problema non è facile (dal momento che è in gran parte una questione di preferenze personali); le cose che di solito provo sono

  • restringi l'esempio (nel tuo caso, elimina tutte le clausole aggiuntive nel CASE )
  • riscrivi da zero la parte offensiva della query
  • copia una query simile che funzioni e modificala gradualmente in modo che assomigli alla query incriminata finché non riscontro l'errore