使用用户定义的函数作为布尔表达式

时间:2013-12-02 11:05:33

标签: oracle plsql oracle11g

如何将用户定义的函数用作布尔表达式?

例如函数REGEXP_LIKE()用作布尔表达式,对吗?

... WHERE REGEXP_LIKE() ...

但是如何为用户定义的功能制作这样的?当我的函数返回BOOLEAN类型然后,当我调用这个函数时,我得到错误,因为纯SQL不能使用BOOLEAN类型。

P.S。

所以,我这样做:我的函数返回VARCHAR2类型:即'TRUE''FALSE'然后在SQL中我使用:... WHERE my_function() = 'TRUE' ...

这是模拟布尔类型的正确方法吗?还是存在更好的解决方案?

1 个答案:

答案 0 :(得分:1)

没有。这在Oracle中可能会令人困惑,但SQL不知道布尔数据类型,尽管它处理布尔表达式。与可以使用布尔数据类型的过程PL / SQL不同。

在Oracle SQL和PL / SQL中由不同的引擎进行评估。这些引擎使用类似的数据类型,但不一样。