Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 input параметр с множеством in  [new]
DnG
Member

Откуда:
Сообщений: 560
Подскажите как лучше. Должна быть выборка в клиенте вида
...
where kodgr in (1,2,3,...)

Делал в делфи строку и передавал в фильтр, но пришёл к выводу что в плане производительности не очень хорошо, так как исп. не tqadotable а tadoquery (по другому ни как).

затем подумал, как бы эту строчку передать в хран. проц., но как ? Строкой? А как потом её распарсить? Передавать полным запросом и выполнять (не подходит, слишком большой запрос).

Думаю то придётся парсить строчку в хран. проц. Подскажите как?
7 окт 09, 11:49    [7752340]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Начните с SELECT @@version.
7 окт 09, 11:50    [7752350]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
DnG
Member

Откуда:
Сообщений: 560
pkarklin
Начните с SELECT @@version.


Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
7 окт 09, 11:52    [7752381]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
В TADOQuery сформируйте вызов процедуры, перед которым создаётся и заполняется временная таблица.
В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами.
И не надо тогда ничего парсить.
7 окт 09, 11:54    [7752393]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
https://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml
7 окт 09, 11:55    [7752399]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
DnG
Member

Откуда:
Сообщений: 560
iap
В TADOQuery сформируйте вызов процедуры, перед которым создаётся и заполняется временная таблица.
В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами.
И не надо тогда ничего парсить.



> В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами

это как это?
7 окт 09, 12:03    [7752463]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
DnG, просто select * from #table, без создания в начале процы.
7 окт 09, 12:05    [7752482]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DnG
iap
В TADOQuery сформируйте вызов процедуры, перед которым создаётся и заполняется временная таблица.
В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами.
И не надо тогда ничего парсить.



> В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами

это как это?
Пример текста SQL TADOQuery:
SET NOCOUNT ON;
SELECT 1 [kodgr] INTO #Param
UNION ALL SELECT 2
UNION ALL SELECT 3;
EXEC dbo.Pr;
Пример процедуры:
CREATE PROCEDURE dbo.Pr AS SELECT * FROM #Param;
А что Вас удивляет?
7 окт 09, 12:11    [7752514]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
Пример процедуры:
CREATE PROCEDURE dbo.Pr AS SELECT * FROM #Param;
Или так:
CREATE PROCEDURE dbo.Pr AS
SET NOCOUNT ON;
SELECT T.*
FROM [Таблица] T
WHERE T.kodgr IN (SELECT kodgr FROM #Param);
7 окт 09, 12:14    [7752548]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
DnG
Member

Откуда:
Сообщений: 560
iap
DnG
iap
В TADOQuery сформируйте вызов процедуры, перед которым создаётся и заполняется временная таблица.
В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами.
И не надо тогда ничего парсить.



> В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами

это как это?
Пример текста SQL TADOQuery:
SET NOCOUNT ON;
SELECT 1 [kodgr] INTO #Param
UNION ALL SELECT 2
UNION ALL SELECT 3;
EXEC dbo.Pr;
Пример процедуры:
CREATE PROCEDURE dbo.Pr AS SELECT * FROM #Param;
А что Вас удивляет?


а что если у меня kodgr 100 штук ?
7 окт 09, 12:26    [7752649]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
DnG,

и что? Трудно в цикле сформировать соответствующую инструкцию SQL?
7 окт 09, 12:33    [7752709]     Ответить | Цитировать Сообщить модератору
 Re: input параметр с множеством in  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DnG
iap
DnG
iap
В TADOQuery сформируйте вызов процедуры, перед которым создаётся и заполняется временная таблица.
В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами.
И не надо тогда ничего парсить.



> В процедуре работайте с этой временной таблицей, считая, что она есть и заполнена параметрами

это как это?
Пример текста SQL TADOQuery:
SET NOCOUNT ON;
SELECT 1 [kodgr] INTO #Param
UNION ALL SELECT 2
UNION ALL SELECT 3;
EXEC dbo.Pr;
Пример процедуры:
CREATE PROCEDURE dbo.Pr AS SELECT * FROM #Param;
А что Вас удивляет?


а что если у меня kodgr 100 штук ?
Да хоть 100000
Кто мешает сформировать в цикле нужную строку SQL?
7 окт 09, 12:34    [7752716]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить