sql >> Databasteknik >  >> RDS >> Oracle

PLS-00103:Påträffade symbolen END när man förväntade sig + &=etc

Din sista klausul ska använda ELSE istället för 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;

UPPDATERA

Att ge dig råd om hur du felsöker detta är inte lätt (eftersom det till stor del är en fråga om personliga preferenser); saker jag brukar prova är

  • begränsa exemplet (i ditt fall, ta bort alla ytterligare satser i CASE )
  • skriv om den stötande delen av frågan från början
  • kopiera en liknande fråga som fungerar och ändra frågan gradvis så att den liknar den stötande frågan tills jag stöter på felet


  1. TOP och ORDER BY sql fel

  2. välj kategorier med föräldranamn från en tabell

  3. group_concat prestandaproblem i MySQL

  4. MariaDB RTRIM() vs RTRIM_ORACLE():Vad är skillnaden?