Обновление Java JDBC Oracle 9i до 10g проблем

Мы только что обновили oracle 9i до 10g и запрос к базе данных у меня работает с клиентом 9i, но не с 10g. Ничего в запросе не изменилось. Я получаю следующую ошибку:

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

Не совсем уверен, что происходит. Почему бы это больше не бежать? Это просто оператор выбора, который объединяет около 3 или 4 таблиц. Я удостоверяюсь, что я передаю переменную, используя setInt (это число, которое я использую). При различении объединяемых таблиц единственное, что я нахожу разным, состоит в том, что в одной таблице столбец, к которому я присоединяюсь, устанавливается как число в одной таблице и число (12) в другой. Это имеет значение? Запрос по-прежнему выполняется в TOAD и SQL Navigator...

2 ответа

Решение

Проблема заключалась в следующем вызове метода для подготовленного оператора:

ps.setEscapeProcessing(false);

Убрал то и теперь работает нормально. Не думайте, что это совместимо с драйвером oracle 10g. Спасибо всем за помощь.

На ум приходят 2 мысли:

  1. убедитесь, что вы используете правильную версию драйвера jdbc. Поскольку вы сказали, что запрос работает в TOAD и т. Д., Это, вероятно, будет вашей проблемой.
  2. убедитесь, что вы не используете ключевые слова ORACLE в своем запросе в качестве псевдонимов столбцов и т. д.

Кроме того, из опыта, если ваша база данных большая / занятая, у вас есть верный путь, прежде чем ваша среда 10g станет стабильной. Мои рекомендации:

  1. узнать как можно больше о статистике
  2. Прочитайте руководства по выживанию (есть много в сети)
  3. следить за встроенными заданиями, которые пересчитывают статус. Нас забили через 12 дней после начала работы, потому что изменения в статистике снизили производительность ключевых запросов. Наше тестирование не позволило провести 12-дневный тест на стабильность.
  4. знать о привязке к переменной, если вы еще этого не сделали
Другие вопросы по тегам