Voor zover ik weet is er geen boolean type in Oracle SQL, dus je kunt geen CASE
hebben expressie die evalueert naar een booleaanse waarde. Gelukkig heb je het in jouw specifieke geval niet nodig:
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
Zoals je kunt zien, heb ik ook enkele expliciete typeconversies toegevoegd:vertrouwen op SQL impliciete conversies is een SPECIEEL SLECHT IDEE . De bovenstaande code gaat ervan uit dat TERM_CODE
en GPA_TERM_CODE
zijn strings.