データ移行クエリを作成して、実績データベースのテーブルに追加する新しい列の値を既存のレコードに設定することは、おそらく不可能です。テーブルは200,000行のオーダーのどこかにあります。クエリで多くの行が返されたときにOracleのextractValueが失敗する
値のソースは、データベースに格納されているXMLの一部です。私は、私が望む値を引き出すいくつかのXPathを持っています。そして、値を取得するためにextractValueを使用することは、クエリによって更新されるレコードの数が私のテストDBにある数よりも大きくなるまで、すべて良いようです。
レコードセットがランダムなサイズ(約500行程度)になったら、「ORA-19025:EXTRACTVALUEは1ノードのみの値を返します」というエラーが発生します。 XPathで一意の結果がなかったデータベースに何らかの奇妙な行があることがわかったので、クエリのレコードを制限して、不良レコードを分離しようとしました。しかし、私がレコードセットを縮小するとすぐに、エラーは消えました。実際には、このXPathクエリに複数の値を返す行はありません。それは、extractValueで何か起きているようなものです。
誰もがこれについて何か知っていますか?私はSQLの専門家ではなく、OracleよりもSQL Serverに多くの時間を費やしています。だから私はこれを動作させることができない場合、私はカーソルや何かを混乱させるために残っていると思う。
アドバイス/ヘルプ?役立つなら、サーバー上で10gを実行しています。ありがとう!
可能であれば、いくつかのコード(サンプル行、xpath、...)を追加すると、問題のデバッグに役立ちます – jitter
このエラーは、extractvalueが単一の値で動作しない場合にのみ発生します。あなたはextractvalueの代わりにextractvalueを使用することができます。出力をデバッグします。 – jitter
あなたのXMLに悪いデータがあると思いませんか?(i-e:少なくとも2つの値が抽出されます) –