![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое формирование списка значений для выборки [D5, MSSQL]
harisma © (2008-02-28 16:10:00)Необходимо написать простой запрос (являющийся частью другого скрипта), возвращающий некоторый набор данных. Ну, что-то вроде такого:
select <somefields> from <sometable>
where recid in (<values set>).
Проблема в том, что этот <values set> должен формироваться предварительно в самом скрипте, тоесть передать его извне в виде параметра из дельфийского кода нельзя. А вот как это сделать в скрипте - может кто подскажет.
Заранее спасибо.
Виталий Панасенко(дом) (2008-02-28 16:26:00) [21]
> harisma (28.02.08 16:22) [5]
>
>
> > Ega23 ©
>
> Не понял...
>
В коде программы заключи в кавычки.. в чем проблема? а почему
> Проблема в том, что этот <values set> должен формироваться
> предварительно в самом скрипте, тоесть передать его извне
> в виде параметра из дельфийского кода нельзя.
?
sniknik (2008-02-28 16:24:00) [22]> Лучше QuotedStr
формирование в скрипте, в сервере mssql... там тоже есть? видимо отстал от жизни.
Reindeer Moss Eater (2008-02-28 16:23:00) [23]То есть результирующий запрос должен получиться типа
а какой типа получается?
Sergey13 (2008-02-28 16:23:00) [24]> [0] harisma (28.02.08 16:10)
Заполни значениями временную таблицу и соедини с ней основную.
Виталий Панасенко(дом) (2008-02-28 16:22:00) [25]
> Ega23 © (28.02.08 16:19) [4]
>
> '''
Лучше QuotedStr
harisma (2008-02-28 16:22:00) [26]
> Ega23 ©
Не понял...
Ega23 (2008-02-28 16:19:00) [27]'''
harisma (2008-02-28 16:18:00) [28]Да, забыл сказать, что поле recid имеет тип char(16)
Это я понимаю, конкатенацией, но не получается. Может я что не так делаю?
Покажите пожалуйста образец. Следует учитывать, что значения должны быть в кавычках!! То есть результирующий запрос должен получиться типа
select <somefields> from <sometable>
where recid in ('a', 'b', 'c', 'd' ...)
Ega23 (2008-02-28 16:13:00) [29]
declare @aSQL varchar(1000)
Set @aSQL='Select * from Table'
exec(@aSQL)
Ну а в свою переменную в динамике можешь чё хошь напихать. Глваное за размерность varchar не вылези
Reindeer Moss Eater (2008-02-28 16:12:00) [30]каки везде. конкатенацией строк.