小编use*_*850的帖子

如何编写仅在没有比较运算符的情况下计算结果为true的where子句中使用的函数?

我的问题是: 在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包装器.

sql oracle plsql where-clause conditional-statements

7
推荐指数
2
解决办法
5130
查看次数