Oracle SQL where 子句中的函数

Posted

技术标签:

【中文标题】Oracle SQL where 子句中的函数【英文标题】:Function in Oracle SQL where clause 【发布时间】:2019-09-09 06:37:13 【问题描述】:

我有一个这样的查询:

SELECT * 
FROM employees emp 
WHERE emp.loc = 'US' 
  AND usr.fnctn('emp_sal', :sal1, :sal2);

此查询导致错误:

ORA-00920: 无效的关系运算符

我的函数只返回employees 表中的最高和最低值

【问题讨论】:

你的问题在哪里,你想达到什么目标? 非常抱歉先生。刚刚编辑过。 您不能在 sql 中使用布尔值,因此 fnctn 必须返回其他内容,因此您需要一些关系来比较返回值。 你的函数返回两个值?不可能,除非它返回集合。 "docs.oracle.com/cd/B28359_01/appdev.111/b28370/…" - "避免在函数中使用 OUT 和 IN OUT。函数的目的是接受零个或多个参数并返回单个值。函数必须没有副作用,这会更改子程序非本地变量的值。” 【参考方案1】:

函数返回一个值。

在 where 子句中,您需要将该返回值与某些内容进行比较,例如

SELECT * 
FROM employees emp 
WHERE emp.loc = 'US' 
AND usr.fnctn('emp_sal', :sal1, :sal2) = 42;

【讨论】:

以上是关于Oracle SQL where 子句中的函数的主要内容,如果未能解决你的问题,请参考以下文章