Вниз
Скачать: CL | DM;

SQL: SELECT ... WHERE ID_Fld IN --->MyArray<--- ???   Найти похожие ветки 

 
Silver_ ©   (2004-01-23 13:37) [0]

SELECT Fld1, Fld2
FROM MyTable_2
WHERE ID_Fld IN Dinamic_Array_of_Integer


Словами: Надо выбрать записи, ID_Fld которых занесены в Array, который динамически заполняется в проге

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

WHERE ID_Fld = 1 OR ID_Fld = 4 OR ID_Fld = 7 OR ID_Fld = 3 ...

не годится, так как значений может быть бог знает сколько много и могу нарваться на ругань от сервера (Access-а)
типа слишком длинный запрос или еще че нибудь


 
Reindeer Moss Eater ©   (2004-01-23 13:44) [1]

Словами: Надо выбрать записи, ID_Fld которых занесены в Array, который динамически заполняется в проге

Серверу передается запрос в виде текста.
Все массивы остаются в приложении.
Пройтись по массиву и сформировать строку
.... in (value1,value2,....,valueN)


 
Курдль ©   (2004-01-23 13:47) [2]


> Пройтись по массиву и сформировать строку
> .... in (value1,value2,....,valueN)


Только не увлекаться, а то даже "Оракл" один раз на такое ругнулся типа "Ваш запрос непозволительно длинный!"


 
Hint ©   (2004-01-23 13:48) [3]

Все для MSSQL 2000
1. Заполнять temp table в программе нужными значениями, а потом уже SELECT ... WHERE ID_Fls IN (SELECT ID_Fld From temp_table).

2. Формировать с программе строку типа "(0, 1, 2)", передавать в Stored Procedure, текст которы примерно такой:


CREATE STORED PROCEDURE usp_Example
 @dyn_arr varchar(N) -- n это ваше, скока надо
AS
 EXEC("SELECT ... WHERE ID_Fld IN " + @dy_arr)
go


 
Тимохов ©   (2004-01-23 13:53) [4]

Вариант первый из 3 будет существенно быстрей при многократном обращении к такому запросу. Я бы еще индекс на временную таблицу сделал.


 
ZrenBy ©   (2004-02-20 16:13) [5]

http://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
6-1074236639
Vorobyev Sergey
2004-01-16 10:03
2004.03.28
Доступ к папке на Win2000 из Win98 под другим пользователем?


1-1078613843
Кудесник
2004-03-07 01:57
2004.03.28
Хранение и работа с данными без использования...


6-1073907626
Anatolik
2004-01-12 14:40
2004.03.28
kak c помошью компанента WebBrowser можно соединится через


1-1078728474
rxman
2004-03-08 09:47
2004.03.28
Примеры к Indy...


1-1078486241
Курдль
2004-03-05 14:30
2004.03.28
Создать TBitmap "с нуля" в электронном виде.




   Наверх