1

これをデバッグするためにどこから始めればよいかわかりません。一部の開発者は、Oracle 10.2.0.1.0 - 64 ビットを使用して正常に完了する、Windows マシンでローカルにいくつかの pl/sql コードを作成しています。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のバージョンを更新し、本番と同じバージョンで開発する必要がありましたが、手遅れであり、私はそれらを制御できません...

どんなアイデアでも大歓迎です。

4

1 に答える 1

1

このAskTomスレッドを参照してください:

ANSI SQL のテーブル参照 (相関名) は、1 レベルの深さに限定されています

...

バージョン 10.2.0.1.0 では、次のクエリが機能します。

select (select count(*) from (select * from scott.emp where ename = dual.dummy)) from dual;

...

それはバグでした。

9i、10g、または 11g のいずれのターミナル リリースでも機能しません。

私はローカルで開発することの大ファンです。主な利点の 1 つは、サーバーよりもローカル インスタンスの構成と管理が簡単であることです。開発者が新しいバージョンを使いたくないことに驚いています。

于 2012-12-06T20:09:30.870 に答える