伙计们!
我们的 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 就在这里。
谢谢你。