我不知道从哪里开始debugging。 一些开发人员已经在他们的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版本,并且正在开发与生产版本相同的版本,但已经太晚了,我无法控制它们。
任何想法,不胜感激。
看到这个AskTom线程 :
ANSI SQL的表引用(相关名称)的作用域只有一个深度
…
在10.2.0.1.0版本中,该查询工作:
选择(从select * from(select * from scott.emp where ename = dual.dummy))从双重选择(*);
…
这是一个错误。
它不适用于9i,10g或11g的终端版本
我是本地开发的巨大粉丝。 其中一个主要优点是配置和管理本地实例比服务器更容易。 我很惊讶开发人员不想使用更新的版本。