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

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

Ответить
Luxor
новенький
Сообщения: 72
Зарегистрирован: 10.06.2010 19:30:43

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

Сообщение Luxor »

БД 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' то возвращается пустой результат.
В чем ошибка?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

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

Также может быть глюк самого компонента, который не понимает как работать с IN
t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Сообщение t-ea »

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

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


where ((E$_OPERATION.R$_DATA in ('''Значение 1'', ''Значение 2'''))))
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

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

Сообщение Luxor »

печально что нельзя передать.
А есть ли способ проверить вхождение значений, передавая его в параметр?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

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

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

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

Сообщение Vapaamies »

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

Опиши прикладную задачу, не корми с ложечки.
Ответить