私の知る限り、Oracle SQLにはブール型がないため、CASE
を使用することはできません。 ブール値に評価される式。幸いなことに、特定のケースでは必要ありません:
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
ご覧のとおり、明示的な型変換もいくつか追加しました。SQLの暗黙的な変換を信頼することは、特に悪いアイデアです。 。上記のコードは、TERM_CODE
を想定しています。 およびGPA_TERM_CODE
文字列です。