如何将用户定义的函数用作布尔表达式?
例如函数REGEXP_LIKE()
用作布尔表达式,对吗?
... WHERE REGEXP_LIKE() ...
但是如何为用户定义的功能制作这样的?当我的函数返回BOOLEAN类型然后,当我调用这个函数时,我得到错误,因为纯SQL不能使用BOOLEAN类型。
P.S。
所以,我这样做:我的函数返回VARCHAR2
类型:即'TRUE'
或'FALSE'
然后在SQL中我使用:... WHERE my_function() = 'TRUE' ...
这是模拟布尔类型的正确方法吗?还是存在更好的解决方案?
答案 0 :(得分:1)
没有。这在Oracle中可能会令人困惑,但SQL不知道布尔数据类型,尽管它处理布尔表达式。与可以使用布尔数据类型的过程PL / SQL不同。
在Oracle SQL和PL / SQL中由不同的引擎进行评估。这些引擎使用类似的数据类型,但不一样。