为什么我的oracle语句在Windows数据库上的运行方式与linux不同?

时间:2012-12-06 17:06:46

标签: database windows oracle10g alias redhat

我不知道从哪里开始调试这个。 一些开发人员已经在他们的Windows机器上本地编写了一些pl / sql代码,使用Oracle 10.2.0.1.0 - 64位完成。当它进入生产,即Red Hat 5.3并运行10.2.0.2.0时,它给了我这个错误:

ORA-00904:“S”。“BARSTREAMREFERENCEID”:标识符无效

以下是在Windows中使用的代码的要点:

EXECUTE IMMEDIATE('
  update candyman.CANDY_REFERENCES s
     set ( s.flavour, s.taste, s.colour, s.privateField3 ) =
         ( select * from
                ( select r.flavour, r.taste, r.colour, null
                    from candyman.FOO_REFERENCE_SET t
                    join candyman.FOO_REFERENCES r on r.fooReferenceID = t.fooReferenceID
                   where t.barStreamReferenceID = s.barStreamReferenceID
                order by r.colour )
            where rownum = 1 )
   where privateField3 is not null
     and exists
         ( select 1
             from candyman.FOO_REFERENCE_SET t
             join candyman.FOO_REFERENCES r on r.fooReferenceID = t.fooReferenceID
            where t.barStreamReferenceID = s.barStreamReferenceID )
');

我知道......他们应该已经与公司的其他人更新了他们的Oracle版本,并且正在开发与生产相同的版本,但为时已晚,我无法控制它们......

非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

请参阅this AskTom thread

  

ANSI SQL将表引用(相关名称)限定为一个   深层次

     

...

     

在10.2.0.1.0版中,此查询有效:

     

select(select count(*)from(select * from scott.emp,其中ename =   dual.dummy))来自dual;

     

...

     

这是一个错误。

     

它不适用于9i,10g或11g的终端版本

我是当地发展的忠实粉丝。其中一个主要好处是,配置和管理本地实例比服务器更容易。我很惊讶开发人员不想使用较新的版本。