ORA-01790: 表达式必须具有与对应表达式相同的数据类型
Posted
技术标签:
【中文标题】ORA-01790: 表达式必须具有与对应表达式相同的数据类型【英文标题】:ORA-01790: expression must have same datatype as corresponding expression 【发布时间】:2017-04-20 05:19:22 【问题描述】:select '' as sys_policy_value_id, '' as value from table(sys.dbms_debug_vc2coll $POLICY_DEF_NAMES$) ap
UNION
select TO_CHAR(p.sys_policy_value_id), p.value from policy_value p
这里p.value
是CLOB。所以我得到了这个例外。
如果我使用to_char('p.value')
,那么我会得到numberFormat
异常。如果我将 ''
作为值更改为 null
作为值,我将得到 ora-00932 inconsistent datatypes expected - got clob
。
也尝试过使用 Union All 但不起作用。
【问题讨论】:
【参考方案1】:使用 DBMS_LOB.substr(p.value, 4000)。它正在工作。
【讨论】:
“它正在工作”不正确。如果p.value
有超过 4000 个字符,那么你正在截断它 - 这就是你需要的吗?这不是正确的解决方案;正确的解决方案是在union
的第一部分选择to_clob('')
,然后按原样选择p.value
。
@mathguy 它正在使用 UNION ALL 而不是 UNION。我也有一个外部选择来组合 UNION 的结果,并且 UNION ALL 也不起作用。你有什么想法吗?以上是关于ORA-01790: 表达式必须具有与对应表达式相同的数据类型的主要内容,如果未能解决你的问题,请参考以下文章
ORA-01790: 表达式必须具有与对应表达式相同的数据类型