0

Oracle 9i から 10g にアップグレードしたばかりで、データベース クエリは 9i クライアントでは動作しますが、10g では動作しません。クエリは何も変更されていません。次のエラーが表示されます。

java.sql.SQLException: ORA-01036: illegal variable name/number

何が起こっているのかよくわかりません。なぜそれはもう実行されません。これは、約 3 つまたは 4 つのテーブルを結合する単なる select ステートメントです。setInt を使用して変数を渡していることを確認しています (使用している数値です)。結合されているテーブルの差分をとっている間、私が異なると思う唯一のことは、あるテーブルでは、結合している列が、一方のテーブルでは Number に設定され、もう一方のテーブルでは Number(12) に設定されていることです。これは違いがありますか?クエリは引き続き TOAD と SQL Navigator で実行されます...

4

2 に答える 2

0

問題は、準備済みステートメントでの次のメソッド呼び出しにありました。

ps.setEscapeProcessing(false);

それを削除したところ、正常に動作するようになりました。それが oracle 10g ドライバーと互換性があったとは思わないでください。助けてくれてありがとう。

于 2010-06-25T14:17:58.473 に答える
0

2つの考えが頭に浮かびます:

  1. 正しいバージョンの jdbc ドライバーを使用していることを確認してください。クエリが TOAD などで機能すると言ったので、これが問題になる可能性が非常に高くなります。
  2. クエリで ORACLE キーワードを列エイリアスなどとして使用していないことを確認してください。

また、経験から、データベースが大きい/ビジーである場合、10g 環境が安定するまでにはかなりの時間がかかります。私の推奨事項:

  1. 統計についてできる限り学ぶ
  2. サバイバルガイドを読む(ネット上にたくさんあります)
  3. ステータスを再計算する組み込みジョブに注意してください。統計の変更により主要なクエリのパフォーマンスが損なわれたため、稼働開始から 12 日後に打撃を受けました。私たちのテストでは、12 日間の安定性テストは許可されていませんでした。
  4. まだ行っていない場合は、バインド変数のピークに注意してください
于 2010-06-25T02:55:53.753 に答える