sql >> データベース >  >> RDS >> Oracle

PLS-00103:+ &=などを期待しているときに記号ENDが見つかりました

    最後の句は ELSE を使用する必要があります 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;
      

    更新

    これをトラブルシューティングする方法についてアドバイスを与えることは簡単ではありません (主に個人的な好みの問題であるため)。私がいつも試していることは

    • 例を絞り込みます (あなたのケースでは、CASE のすべての追加句を取り除きます) )
    • クエリの問題のある部分を最初から書き直す
    • 機能する同様のクエリをコピーし、エラーが発生するまで、そのクエリを徐々に変更して問題のクエリに似せます


    1. タイムスタンプがBETWEENのSQLクエリからの予期しない結果

    2. デフォルトでnull許容でない列を追加するときのOracleのバグ

    3. SQLServer2008の垂直方向のデータから水平方向へ

    4. Windows Azureにasp.netアプリケーションを展開する方法..?