【发布时间】:2017-07-12 12:05:34
【问题描述】:
我在 'union all' 中加入 2 个大型查询(155 列)。通过创建每个查询的测试视图并并排比较名称和数据类型,我已经验证了联合的每一侧的列名和数据类型是相同的。
错误消息指向看似随机的行和列,但我已经仔细检查了这些列以确保数据类型 (varchar2(1300)) 相同。
有谁知道还有哪些其他因素可能引发此错误?运行Oracle 12c.
【问题讨论】:
-
据我记得,名称并不重要(必须在 UNION 的第一个 SELECT 中定义,但在下一个中可以省略或不同)。重要的是两个查询返回相同的列数,并且对应的数据类型相同。
-
@etsa 这是正确的 - 例如此查询有效:
select empno, ename from emp union select deptno, dname from dept;所以问题一定出在数据类型上。 -
明白名称不重要,但想表明联合两侧匹配的列数。 :)
-
您有什么意见吗?
-
@etsa:没有 CASE 语句,但有 1 个 decode() 和几个 cast() 语句。