Autant que je sache, il n'y a pas de type booléen dans Oracle SQL, vous ne pouvez donc pas avoir de CASE
expression qui correspond à une valeur booléenne. Heureusement, dans votre cas particulier, vous n'en avez pas besoin :
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
Comme vous pouvez le voir, j'ai également ajouté quelques conversions de type explicites :faire confiance aux conversions implicites SQL est une SPÉCIALEMENT MAUVAISE IDÉE . Le code ci-dessus suppose que TERM_CODE
et GPA_TERM_CODE
sont des chaînes.