Sejauh yang saya tahu tidak ada tipe boolean di Oracle SQL, jadi Anda tidak dapat memiliki CASE
ekspresi yang mengevaluasi ke nilai boolean. Untungnya, dalam kasus khusus Anda, Anda tidak membutuhkannya:
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
Seperti yang Anda lihat, saya juga telah menambahkan beberapa konversi tipe eksplisit:mempercayai konversi implisit SQL adalah IDE YANG KHUSUS BURUK . Kode di atas mengasumsikan bahwa TERM_CODE
dan GPA_TERM_CODE
adalah string.