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 子句中的函数的主要内容,如果未能解决你的问题,请参考以下文章
oracle 形式:pl/sql 中 where 子句中的 max 子句
变量作为 Oracle PL/SQL 中 where 子句中的列名
在 Oracle SQL 中,除了外连接之外,where 子句中的 (+) 运算符的目的是啥?