Oracle上联合的数据类型不兼容

时间:2013-06-21 21:39:59

标签: oracle union

民间!

我们的ORM(实体框架)与我们的Oracle Provider(Devart)一起生成一些Oracle无法执行的SQL。我不确定是谁导致了这个问题,也许Devart会生成一个可以运行的SQL,因为我们已经设置了环境。

我能想到两种可能性:

  • Devart生成垃圾;
  • Oracle未正确设置。

我认为向Devart提供样本是相当困难的,以便他们可以遇到同样的情况(我已经问过他们here)所以让我们看看第二个。

不起作用的代码:

SELECT        TO_CHAR(NULL) AS EXPR2
FROM            SYS.DUAL
UNION ALL
SELECT        TO_NUMBER(NULL) AS EXPR2
FROM            SYS.DUAL DUAL_1

有效的代码:

SELECT        TO_NUMBER(NULL) AS EXPR2
FROM            SYS.DUAL
UNION ALL
SELECT        TO_CHAR(NULL) AS EXPR2
FROM            SYS.DUAL DUAL_1

可以看出,如果第一个select带有一个数字列,Oracle确实接受不同的类型。但是我们的提供者生成相反的情况(第一个字符然后编号)。

问题是:在Oracle中我们需要做任何设置来接受第一个sql样本吗?

不幸的是我们不知道是什么产生了这种模式但是如果您想尝试,我们的linq是here

谢谢。

1 个答案:

答案 0 :(得分:0)

没有任何设置可以更改以使其正常工作。请阅读答案enter link description here,Ben完全回答了它的工作原理。