Theo như tôi biết không có kiểu boolean trong Oracle SQL, vì vậy bạn không thể có CASE
biểu thức đánh giá thành một giá trị boolean. May mắn thay, trong trường hợp cụ thể của bạn, bạn không cần nó:
and TERM_CODE = :parm_DD_TermCode.TERM_CODE
and GPA_TERM_CODE = CASE
WHEN TERM_CODE LIKE '%80'
THEN SUBSTR(:parm_DD_TermCode.TERM_CODE, 1, 4) || '50'
WHEN TERM_CODE LIKE '%50'
THEN SUBSTR(:parm_DD_TermCode.TERM_CODE, 1, 4) || '10'
WHEN TERM_CODE LIKE '%10'
THEN to_char(to_number(SUBSTR(:parm_DD_TermCode.TERM_CODE, 1, 4)) - 1) || '80'
END
Như bạn có thể thấy, tôi cũng đã thêm một số chuyển đổi kiểu rõ ràng:tin tưởng chuyển đổi ngầm trong SQL là Ý TƯỞNG ĐẶC BIỆT XẤU . Đoạn mã trên giả định rằng TERM_CODE
và GPA_TERM_CODE
là các chuỗi.