Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

PLS-00103:Gặp biểu tượng END khi mong đợi + &=, v.v.

Điều khoản cuối cùng của bạn nên sử dụng ELSE thay vì 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;

CẬP NHẬT

Đưa ra lời khuyên cho bạn về cách khắc phục sự cố này không dễ dàng (vì đó chủ yếu là vấn đề sở thích cá nhân); những thứ tôi thường thử là

  • thu hẹp ví dụ (trong trường hợp của bạn, hãy loại bỏ tất cả các mệnh đề bổ sung trong CASE )
  • viết lại phần vi phạm của truy vấn từ đầu
  • sao chép một truy vấn tương tự hoạt động và thay đổi dần truy vấn đó để giống với truy vấn vi phạm cho đến khi tôi gặp lỗi


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lấy danh sách các số ở giữa hai cột

  2. loại bỏ các bản ghi olde nhóm theo ba cột và sắp xếp theo ngày

  3. Nối các nút XMLType trong truy vấn Oracle

  4. DBMS_PARALLEL_EXECUTE và các khoản trợ cấp gián tiếp cho quy trình

  5. PIVOT Oracle - chuyển đổi dữ liệu nhiều hàng thành một hàng với nhiều cột, không có dữ liệu tổng hợp