Оператор IN в запросе

Модератор: Модераторы

Оператор IN в запросе

Сообщение Luxor » 09.07.2013 13:36:37

БД FIREBIRD 2.5
Пишу запрос в IBEXPERT
Код: Выделить всё
select *
from D$_OPERATION
where D$_OPERATION.T$_OPERATION in (

select E$_OPERATION.ID
from E$_OPERATION
where ((E$_OPERATION.R$_DATA in ('Значение 1', 'Значение 2'))))

Срабатывает нормально. Проблем нет.

Если указать параметр в значение IN
Код: Выделить всё
select *
from D$_OPERATION
where D$_OPERATION.T$_OPERATION in (

select E$_OPERATION.ID
from E$_OPERATION
where ((E$_OPERATION.R$_DATA in (:PARAM))))

соответственно в параметр передаю 'Значение 1', 'Значение 2' то возвращается пустой результат.
В чем ошибка?
Luxor
новенький
 
Сообщения: 72
Зарегистрирован: 10.06.2010 19:30:43

Re: Оператор IN в запросе

Сообщение Ism » 09.07.2013 14:53:07

Возможно выражение In должно быть константой, то есть переменные не воспринимаются.
Так что можно просто формировать готовый текст запроса

Также может быть глюк самого компонента, который не понимает как работать с IN
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Оператор IN в запросе

Сообщение t-ea » 09.07.2013 15:09:14

Мне кажется в итоге в запросе формируется строка

Код: Выделить всё

where ((E$_OPERATION.R$_DATA in ('''Значение 1'', ''Значение 2'''))))
t-ea
новенький
 
Сообщения: 96
Зарегистрирован: 22.09.2006 00:22:34

Re: Оператор IN в запросе

Сообщение Vapaamies » 09.07.2013 15:11:33

Содержимое in нельзя передавать как один параметр.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 270
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: Оператор IN в запросе

Сообщение Luxor » 09.07.2013 15:51:56

печально что нельзя передать.
А есть ли способ проверить вхождение значений, передавая его в параметр?
Luxor
новенький
 
Сообщения: 72
Зарегистрирован: 10.06.2010 19:30:43

Re: Оператор IN в запросе

Сообщение Ism » 09.07.2013 16:41:31

Luxor писал(а):печально что нельзя передать.
А есть ли способ проверить вхождение значений, передавая его в параметр?

Предварительно формируйте список параметров, а потом к тексту запроса
StringReplace(Str,':parameter','param1,param2',[])
И все

Вообще вопрос непонятен
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Оператор IN в запросе

Сообщение Vapaamies » 09.07.2013 17:48:01

Luxor писал(а):А есть ли способ проверить вхождение значений, передавая его в параметр?

Опиши прикладную задачу, не корми с ложечки.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 270
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru