【问题标题】:Function in Oracle SQL where clauseOracle SQL where 子句中的函数
【发布时间】: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。函数的目的是接受零个或多个参数并返回单个值。函数必须没有副作用,这会更改子程序非本地变量的值。”

标签: sql oracle


【解决方案1】:

函数返回一个值。

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

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

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2011-02-18
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2023-04-03
    • 2014-03-12
    相关资源
    最近更新 更多