【发布时间】:2014-07-07 02:26:19
【问题描述】:
我有很多疑问如下
WHERE ( (o215251.MS_SUB_ACNT_CODE = o215225.TD_SUB_ACNT_CODE(+)
AND o215251.MS_MAIN_ACNT_CODE = o215225.TD_MAIN_ACNT_CODE(+)))
AND (o215225.STATUS(+) = 'P')
AND (o215225.TD_MAIN_ACNT_CODE(+) = '989898'
AND o215251.MS_MAIN_ACNT_CODE = '989898')
AND ( (o215225.DOC_DATE)(+) BETWEEN :FromDate AND :ToDate)
在 Oracle Discoverer 10g 中,我运行这些类型的查询没有问题,但我们在测试 Oracle Discoverer 11g 时总是收到这些类型的查询错误: ORA-00920: 无效的关系运算符。
如果我删除日期过滤器,查询运行完美。
我无法更改查询,这几乎是不可能的。
任何其他解决方案,一些注册表调整?
【问题讨论】:
-
您能看到 Oracle 如何重写查询以在两个平台下执行,以及绑定参数实际设置为什么?如果重写的 SQL 实际上在 11g 中有效,那么您可能应该向 Oracle 提出服务请求。看看它是否适用于 ANSI 外连接而不是 Oracle 的旧
(+)语法会很有趣。 -
@AlexPoole,我通过应用 oracle 补丁号 10277316 解决了这个问题。
-
我贴出的上述代码是oracle discoverer在discoverer中添加日期参数时如何重写查询的。
-
好的,很好。您可以添加您必须做的事情作为答案并接受它 - 最好将补丁参考和简单描述作为答案而不是仅仅作为评论,这样有相同问题的任何其他人都可以轻松了解如何制作相同的问题改变你所做的。
标签: oracle