जहाँ तक मुझे पता है कि 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
तार हैं।