我不知道从哪里开始调试这个。 一些开发人员已经在他们的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版本,并且正在开发与生产相同的版本,但为时已晚,我无法控制它们......
非常感谢任何想法。
答案 0 :(得分:1)
ANSI SQL将表引用(相关名称)限定为一个 深层次
...
在10.2.0.1.0版中,此查询有效:
select(select count(*)from(select * from scott.emp,其中ename = dual.dummy))来自dual;
...
这是一个错误。
它不适用于9i,10g或11g的终端版本
我是当地发展的忠实粉丝。其中一个主要好处是,配置和管理本地实例比服务器更容易。我很惊讶开发人员不想使用较新的版本。