Oracle上的union中存在不兼容的数据类型

Oracle上的union中存在不兼容的数据类型,oracle,union,Oracle,Union,伙计们 我们的ORM(实体框架)和我们的Oracle提供商(Devart)正在生成一些Oracle无法执行的SQL。我不确定是谁造成了这个问题,也许Devart生成了一个SQL,在我们已经设置好环境的情况下,它可以运行 我可以想到两种可能性: 德瓦特产生垃圾 Oracle未正确设置 我认为向Devart提供一个样本是相当困难的,这样他们就可以遇到相同的情况(我已经问过他们),所以让我们看看第二个 不起作用的代码: SELECT TO_CHAR(NULL) AS EXPR2 FR

伙计们

我们的ORM(实体框架)和我们的Oracle提供商(Devart)正在生成一些Oracle无法执行的SQL。我不确定是谁造成了这个问题,也许Devart生成了一个SQL,在我们已经设置好环境的情况下,它可以运行

我可以想到两种可能性:

  • 德瓦特产生垃圾
  • Oracle未正确设置
我认为向Devart提供一个样本是相当困难的,这样他们就可以遇到相同的情况(我已经问过他们),所以让我们看看第二个

不起作用的代码:

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
可以看出,如果第一次选择包含数字列,Oracle确实接受不同的类型。但是我们的提供者生成了相反的情况(首先是字符,然后是数字)

问题是:我们需要在Oracle中进行任何设置才能接受第一个sql示例

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


谢谢。

无需更改任何设置即可使其正常工作。请阅读Ben完美回答的答案。

我看不出这两种说法有什么不同。复制粘贴错误?“无法执行”是对该问题的一个相当模糊的描述。我假设问题是你得到了某种错误。如果是这样,发布错误(Oracle错误号和消息文本)可能会有所帮助。我猜您是在暗示您得到了“ORA-01790:表达式必须与相应表达式具有相同的数据类型”错误…请提供准确的错误代码。@Werlang。在SQLFiddle上测试代码后,我修改了这个问题。第一版作品的数量;第一个字符不是。@a_horse_,没有名字仔细看一看我会接受它作为答案,因为如果我们在甲骨文中无能为力,我们将不得不与德瓦特一起解决。Tnx