Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

как использовать ParamByName в селекте ...in (:MyParam) ?   Найти похожие ветки 

 
StarCon   (2004-12-06 13:50) [0]

Для связи с ораклом используется БДЕ и TQuery.
Запрос примерно следующий: "select * from table where field in (:MyParam)". Проблема в том что field у меня - integer, а в качестве параметра передается строка (несколько значений через запятую). Как быть? Необходимо обязательно передавать параметр через ParamByName...


 
Johnmen ©   (2004-12-06 13:52) [1]

То, что ты хочешь, это не параметр, а макроподстановка. (дежа вю у меня конкретное :))
Динамически формируй текст запроса.


 
StarCon   (2004-12-06 14:01) [2]

Динамически нельзя. Нужно обязательно использовать переменные.
Неужели никак нельзя обойти? В DOA на этот случай есть спец. тип параметра...


 
Sergey13 ©   (2004-12-06 14:03) [3]

2[2] StarCon   (06.12.04 14:01)
>Динамически нельзя. Нужно обязательно использовать переменные.
Почему?

>В DOA на этот случай есть спец. тип параметра...
Так DOA и юзай.


 
Johnmen ©   (2004-12-06 14:05) [4]

>В DOA на этот случай есть спец. тип параметра...

Тебе показалось. Т.к. см. [1]


 
roottim ©   (2004-12-06 14:05) [5]

>В DOA на этот случай есть спец. тип параметра
какой
>Динамически нельзя
религия?


 
Sergey13 ©   (2004-12-06 14:10) [6]

2[4] Johnmen ©   (06.12.04 14:05)
>Тебе показалось. Т.к. см. [1]
Нет. Там есть такое. Правда реализовано в конечном итоге скорее всего переделкой запроса.


 
StarCon   (2004-12-06 14:20) [7]

не я этот биллинг проектировал и писал. этим и кончится когда-нибудь, но задача перевода проекта с бде на doa или odac - не на одну неделю.
так что, более конструктивных вариантов нет?


 
Sergey13 ©   (2004-12-06 14:37) [8]

Для запроса вида
"select * from table where field in ()"
использование параметров тоже не конструктивный вариант. 8-)
Можно попробовать создать временную таблицу, записать туда параметры и соединить с главной таблицей.


 
Johnmen ©   (2004-12-06 14:43) [9]

Для биллинговых систем использование IN, по меньшей мере, странно, ввиду тормозов.


 
roottim ©   (2004-12-06 14:49) [10]

множество не может быть переменной, это макроподстановка, имхо, однозначно.
не пойму что мешает написать, пусть BDE,

q1.Sql.Text := Format("select * from table where field in (%s)", [vMyStr]);


 
StarCon   (2004-12-07 13:43) [11]

если использование IN странно, то чем можно заменить эту конструкцию?


 
Sergey13 ©   (2004-12-07 13:45) [12]

Ну например в [8] я описывал вариант. Не подойдет?


 
Johnmen ©   (2004-12-07 14:07) [13]

>StarCon   (07.12.04 13:43) [11]
>если использование IN странно, то чем можно заменить эту конструкцию?

Зависит от постановки вопроса, от смысла списка, откуда он берется, как...


 
StarCon   (2004-12-07 14:29) [14]

вариант 8 - не пойдет
по-моему куда меньше тормозов будет, если In использовать, чем по каждому поводу создавать временные таблицы.
Ситуация такая - есть таблица, большая
выборка из нее идет по одному полю, но значения и их количества разные, например - in (3, 56, 78)
использовать макроподстановку нежелательно, т.к. сам текст запроса очень большой, вызывается часто, а для оракла при макроподстановке - это разные селекты, кэш забивается и т.п. и т.д. А если бы был параметр - то сервер очень хорошо бы обходился с этими запросами...


 
Sergey13 ©   (2004-12-07 14:37) [15]

2[14] StarCon   (07.12.04 14:29)
>по-моему куда меньше тормозов будет, если In использовать, чем по каждому поводу создавать временные таблицы.
Зачем каждый раз? Создай один раз для всех подобных запросов.

>использовать макроподстановку нежелательно...А если бы был параметр - то сервер очень хорошо бы обходился с этими запросами...

Так говорят же тебе, даже если ты думаешь, что используешь параметры, в этом случае будет макроподстановка.



Страницы: 1 вся ветка

Текущий архив: 2005.01.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.057 c
9-1086684305
wiz
2004-06-08 12:45
2005.01.02
2d аркада (OpenGL). Очередной релизец


14-1102992265
Думкин
2004-12-14 05:44
2005.01.02
С днем рождения! 14 декабря


14-1102770444
БезОбид
2004-12-11 16:07
2005.01.02
Мануал для "автошемы"


14-1102759642
OneFragLeft
2004-12-11 13:07
2005.01.02
Загрузка из сети


6-1097767269
Sniron
2004-10-14 19:21
2005.01.02
Имя процесса по порту