Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с CASE


тф ©   (2006-09-22 15:42:00) 

Есть запрос в котором на LEFT JOIN есть CASE условие. Раньше работал, сейчас клиенты переустановили сервер и перестал работать запрос.
Говорит ORA-00928 отсутствует ключевое слово SELECT

Весь запрос большой. Привожу только "проблемную" часть. Без нее все работате ОК.

SELECT .... FROM
.......
LEFT JOIN M_PACKAGE M_PK ON (M_PK.ID = CASE WHEN UOR_DS.ID_PACKAGE IS NULL THEN M_MC.ID_PACKAGE ELSE UOR_DS.ID_PACKAGE END)

Используется Oracle 9.


Desdechado   (2006-09-22 17:24:00) [1]

конечно, если у вас есть договор с Ораклом на техподдержку
без него туда доступ закрыт


Desdechado   (2006-09-22 17:23:00) [2]

на металинке
metalink.oracle.com


salexn   (2006-09-22 17:19:00) [3]

глупый вопрос, а где патч последний взять


evvcom   (2006-09-22 17:11:00) [4]

> [3] salexn   (22.09.06 16:22)

???
После установки дистриба показывает 9.2.0.1 вообще-то. Патч посвежее накати, на 9.2.0.1 мы встречали тучу багов с OUTER JOIN-ами, когда они используются совместно с некоторыми конструкциями, в том числе и кейсом вроде. У нас 6 патч стоит, подобные join-ы работают ок.
Остался пока только один глючок, который разработчикам Оракла известен, но в 7 патче тоже не заткнут. В 8-м не знаю.


salexn   (2006-09-22 17:04:00) [5]

>Val
да
см. [7]


Val   (2006-09-22 17:01:00) [6]

CASE WHEN 1 = 0 THEN
работает?


salexn   (2006-09-22 16:45:00) [7]

>sergey13
То же самое


Sergey13   (2006-09-22 16:41:00) [8]

> [7] salexn   (22.09.06 16:39)

Попробуй
CASE WHEN NVL(UOR_DS.ID_PACKAGE,0)=0 THEN


salexn   (2006-09-22 16:39:00) [9]

абсолютно.
Если убрать CASE то все работает. Даже более, если заменить
CASE WHEN UOR_DS.ID_PACKAGE IS NULL THEN на
CASE WHEN 1= 1 THEN
работает


Val   (2006-09-22 16:33:00) [10]

уверены, что дело в case?
выполняется ли LEFT JOIN M_PACKAGE M_PK ON M_PK.ID = UOR_DS.ID_PACKAGE
?


salexn   (2006-09-22 16:29:00) [11]

Так он не выполняется :-)
Но вообще то пробовали и в PLSQL и SQL Plus


Val   (2006-09-22 16:27:00) [12]

где и как выполняете запрос?


salexn   (2006-09-22 16:22:00) [13]

Был и есть. 9.2.0.0.


ANB   (2006-09-22 16:04:00) [14]


> Используется Oracle 9.

А был 9.2 ?


clickmaker   (2006-09-22 15:58:00) [15]


> отсутствует ключевое слово SELECT

нехило переустановили...


Наверх

Титульная страница Поиск, карта сайта Написать письмо