Что может вызвать ORA-00936 - Пропущенное выражение со следующим sql? - PullRequest
0 голосов
/ 30 октября 2008

Мы видим сообщение об ошибке ORA-00936 Отсутствует выражение для следующего SQL:

Обратите внимание, что это всего лишь урезанная версия гораздо большего SQL, поэтому перезапись его во внутреннее объединение или подобное не входит в сферу этого:

Сбой SQL:

select (select count(*) from gt_roster where ROS_ROSTERPLAN_ID = RPL_ID)
from gt_rosterplan
where RPL_ID = 432065061

Что я пробовал: * Извлечение самого внутреннего SQL и подстановка идентификатора из внешнего SQL дает мне число 12. * Псевдоним как подзапроса, так и количества (*) по отдельности и в то же время не меняет результат (т. Е. Все еще ошибка)

Что еще мне нужно посмотреть?

Выше приведены только таблицы, без представлений, RPL_ID является первичным ключом gt_rosterplan, а ROS_ROSTERPLAN_ID является внешним ключом для этого столбца, здесь в основном нет никакой магической или скрытой информации.


Редактировать: В ответ на ответ, нет, здесь вам не нужны псевдонимы, поскольку столбцы имеют уникальные имена в таблицах.


Решено: Проблема заключалась в том, что на клиенте использовалась неверная версия драйвера клиента, 9.2.0.1, и с этой версией существуют известные проблемы.

Ответы [ 2 ]

3 голосов
/ 27 января 2009

Проблема заключалась в том, что на клиенте использовалась неверная версия драйвера клиента, 9.2.0.1, и с этой версией существуют известные проблемы.

1 голос
/ 30 октября 2008

Это должно сработать, если предположить, что имена столбцов не являются неоднозначными (и даже если бы они были, это привело бы к другой ошибке). Я выполнил эквивалентное утверждение и получил результат без ошибки:

SQL> select (select count(*) from emp2 where empdeptno = deptno)
  2  from dept
  3  where deptno=10
  4  /

(SELECTCOUNT(*)FROMEMP2WHEREEMPDEPTNO=DEPTNO)
---------------------------------------------
                                            3

Похоже, что в Google есть или были ошибки Oracle, приводящие к ошибкам ORA-00936 - см. это например .

...