Đ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