Oracle Apex - ORA-00932:数据类型不一致:应为 CHAR 获得 NUMBER

Oracle Apex - ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

我收到 ORA-00932:数据类型不一致:预期 CHAR 在尝试查询以下内容时出现 NUMBER 错误:

case
    when PRODUCT_NAME = 'Something' and PRICE is not null 
    and QUANTITY > 0 
    then :P4_MY_NUMERIC_ITEM
    else 1
end MY_COLUMN

(item :p4 是一个预填充的(通过计算)项目。值 = 1 ) 有趣(奇怪)的是,当我实际上 select 一个数字时它起作用了(但这不是我需要的,因为用户应该可以编辑该项目):

case
    when PRODUCT_NAME = 'Something' and PRICE is not null 
    and QUANTITY > 0 
    then 2
    else 1
end MY_COLUMN

有谁知道为什么会这样,以及如何解决这个问题,让我的项目保留在查询中?

谢谢!

一个 case 表达式 return 是一个单一值,属于单一类型。所有分支都应具有相同的类型。

尽管它的名字 :P4_MY_NUMERIC_ITEM 看起来是一个字符串。您有两个选择:

  1. 使用适当的类型:P4_MY_NUMERIC_ITEM
  2. 或者,将 else 更改为 return 字符串:else '1'.

这样可以吗?

else '1'

因为 Apex 项目是 字符串 所以 :P4_MY_NUMERIC_ITEM (尽管包含数字)是一个字符串。 CASE 需要相同的数据类型,即

case when ... then <string>
              else <expects a string as well, hence '1' and not just 1>
end

或者, :P4 项转换为数字

case when ... then to_number(:P4_MY_NUMERIC_ITEM)
              else 1
end