我的问题是: 在Oracle中,regexp_like在where子句中单独工作,而不必与1或0或字符串进行比较.只能在case语句或where子句中评估某些内容时调用该函数.由于无法描述(尝试在数据字典中搜索它),我想知道如何编写一个以相同方式工作的函数.
例如:
function is_prod
returns boolean
is
l_var boolean := false;
begin
if sys_context('userenv','db_unique_name') = '"PROD_SERVER"' then
l_var := true;
end if;
return l_var;
end;
Run Code Online (Sandbox Code Playgroud)
该函数编译,但不能在如下的SQL语句中使用:
select *
from table t
where is_prod
Run Code Online (Sandbox Code Playgroud)
因为我收到以下错误:ORA-00920:无效的关系运算符.
将它与数字或真实比较也不起作用.
我在哪里可以找到regexp_like的代码库,或者我需要做些什么来使其像regexp_like一样工作?
注意:我已经浏览了几个小时,发现Oracle的regexp函数实际上是java调用,但这意味着它们仍然需要一个pl/sql包装器.