Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

как использовать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.03 c
3-1102316898
antoxa
2004-12-06 10:08
2005.01.02
Помогите физически удалить записи в DBF файлых


6-1097842342
Meff
2004-10-15 16:12
2005.01.02
Посылка файлов через сокет


3-1101985880
intaari
2004-12-02 14:11
2005.01.02
Какие существуют способы восстановления БД


3-1102310974
Fantasy
2004-12-06 08:29
2005.01.02
Help SQL


6-1097940533
Kross
2004-10-16 19:28
2005.01.02
Оперделение доступных ресурсво по названию компьютера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский