Вниз
Скачать: 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.02 c
6-1073871867
iWorm
2004-01-12 04:44
2004.03.28
Учет количества переданных байт


9-1062909682
Micah'GF
2003-09-07 08:41
2004.03.28
TDIB => TImage


1-1078944458
TSa
2004-03-10 21:47
2004.03.28
Кнопка закрыти в MDI приложениях


1-1078405248
Silver_
2004-03-04 16:00
2004.03.28
В OnCreate Формы требуется Application.Terminate но...


1-1078924059
white
2004-03-10 16:07
2004.03.28
Преобразование типов в Delphi!




   Наверх