民间!
我们的ORM(实体框架)与我们的Oracle Provider(Devart)一起生成一些Oracle无法执行的SQL。我不确定是谁导致了这个问题,也许Devart会生成一个可以运行的SQL,因为我们已经设置了环境。
我能想到两种可能性:
我认为向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。
谢谢。