Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое формирование списка значений для выборки [D5, MSSQL]


Страницы:   1 2

harisma ©   (2008-02-28 16:10:00) 

Необходимо написать простой запрос (являющийся частью другого скрипта), возвращающий некоторый набор данных. Ну, что-то вроде такого:


select <somefields> from <sometable>
where recid in (<values set>).


Проблема в том, что этот <values set> должен формироваться предварительно в самом скрипте, тоесть передать его извне в виде параметра из дельфийского кода нельзя. А вот как это сделать в скрипте - может кто подскажет.
Заранее спасибо.


ЮЮ   (2008-02-29 04:14:00) [1]

А почему бы в первом скрипте сразу не возвращать нужный НД вместо формирования запроса с IN?


harisma   (2008-02-28 20:13:00) [2]

В общем, у меня получилось. Согласно совета [2]. :)
Всем, кто участвовал - спасибо


Anatoly Podgoretsky   (2008-02-28 19:09:00) [3]

> Виталий Панасенко(дом)  (28.02.2008 16:57:24)  [24]

Это не значение, а параметр, и при том один.


Виталий Панасенко(дом)   (2008-02-28 17:04:00) [4]

Да, отработало "на ура"..
declare @S varchar(1000)
set @S='select * from categories where categoryname in(''Beverages'',
''Condiments'')'
exec (@S)


Виталий Панасенко(дом)   (2008-02-28 16:59:00) [5]


> sniknik ©   (28.02.08 16:56) [23]
>
> Виталий Панасенко(дом)   (28.02.08 16:51) [21]
> > Проверил на СеверномВетре  .... Если подставить значения
> - выбирает
> посмотри что советовали в [2] и найди 10 отличий...
>

Извиняюсь, не обратил внимая...Грипп достал...:-).. Мне, вообще суть задачи не понятна... В целом..


Anatoly Podgoretsky   (2008-02-28 16:57:00) [6]

> harisma  (28.02.2008 16:52:22)  [22]

Динамический запрос, а не динамические параметры.


Виталий Панасенко(дом)   (2008-02-28 16:57:00) [7]

Я так подозреваю, что выборка считает это одним значением..
потому как этот вариант отработал
declare @S nvarchar(1000)
set @S='Beverages'
/*Confections
Dairy Products
Grains/Cereals
Meat/Poultry
Produce
Seafood
*/
select @S
select * from categories
where categoryname in (@S
)


sniknik   (2008-02-28 16:56:00) [8]

Виталий Панасенко(дом)   (28.02.08 16:51) [21]
> Проверил на СеверномВетре  .... Если подставить значения - выбирает
посмотри что советовали в [2] и найди 10 отличий...


harisma   (2008-02-28 16:52:00) [9]


> Anatoly Podgoretsky ©   (28.02.08 16:47) [20]
>
> > harisma  (28.02.2008 16:38:15)  [15]
>
> Ты уверен, что у тебя есть запись со значением F09A7082701AA440,
> F091FEB302FBA040',F081008347F5A240

Записи с recid = ''F09A7082701AA440',
'F091FEB302FBA040','F081008347F5A240'' нету, но есть записи с
recid = 'F09A7082701AA440'
recid = 'F091FEB302FBA040'
recid = 'F081008347F5A240'
Вот, как их выбрать?


Виталий Панасенко(дом)   (2008-02-28 16:51:00) [10]


> Anatoly Podgoretsky ©   (28.02.08 16:47) [20]
>
> > harisma  (28.02.2008 16:38:15)  [15]
>
> Ты уверен, что у тебя есть запись со значением F09A7082701AA440,
> F091FEB302FBA040',F081008347F5A240

Проверил на СеверномВетре, print выдает что данные есть в переменной...Но выборка не пашет..Если подставить значения - выбирает
declare @S varchar(1000)
set @S='''Beverages'''+','+'''Condiments'''
/*Confections
Dairy Products
Grains/Cereals
Meat/Poultry
Produce
Seafood
*/
select @S
select * from categories
where categoryname in (@S
)


Anatoly Podgoretsky   (2008-02-28 16:47:00) [11]

> harisma  (28.02.2008 16:38:15)  [15]

Ты уверен, что у тебя есть запись со значением F09A7082701AA440,F091FEB302FBA040',F081008347F5A240


Виталий Панасенко(дом)   (2008-02-28 16:47:00) [12]

Это я уже понял...Действительно, не пашет в таком виде.Проверил на стандартной БД Northwind...


sniknik   (2008-02-28 16:46:00) [13]

> Он формируется из курсора.
?
это же готовый список для
Sergey13 ©   (28.02.08 16:23) [7]
> Заполни значениями временную таблицу и соедини с ней основную.
даже создавать временную и заполнять не надо, вместо курсора запрос и соединяй...


harisma   (2008-02-28 16:42:00) [14]


> Виталий Панасенко(дом)   (28.02.08 16:40) [16]
>
> мне вот это не понятно
>
> > Проблема в том, что этот <values set> должен формироваться
> > предварительно в самом скрипте,
>
> - кто/что его формирует ? само по себе как-то ?


Он формируется из курсора.


Виталий Панасенко(дом)   (2008-02-28 16:40:00) [15]

мне вот это не понятно

> Проблема в том, что этот <values set> должен формироваться
> предварительно в самом скрипте,

- кто/что его формирует ? само по себе как-то ?


harisma   (2008-02-28 16:38:00) [16]


> В коде программы заключи в кавычки.. в чем проблема?


Не получается. Смотрите, я пишу вот так:
declare @Str varchar(1000)
set @Str = '''F09A7082701AA440''' + ',' + '''F091FEB302FBA040''' + ',' + '''F081008347F5A240'''

но результат выполнения скрипта - пустое множество, хотя я точно знаю, что записи с такими значениями ЕСТЬ.
Может все же я неправильно формирую значение @Str или неправильно его подставляю?

select <somefields> from <sometable>
where recid in (@Str)
?


sniknik   (2008-02-28 16:30:00) [17]

> Так нельзя.
а как/что можно? и зачем? огласите весь список... а то получается разговор слепого с глухим.


Виталий Панасенко(дом)   (2008-02-28 16:29:00) [18]


> sniknik ©   (28.02.08 16:24) [9]
>
> > Лучше QuotedStr
> формирование в скрипте, в сервере mssql... там тоже есть?
>  видимо отстал от жизни.
>

Не понял просто вопроса автора..Либо понял не так как ты...Я недавно спрашивал, как объединить удаленный MS SQL и мои данные из FoxPro.. в итоге в проге выбрал что нужно из БД Foxа, сформировал скрипт в проге и все работает... ну, теряю 3-5 сек(при первом подключении к фоксу)..:-)


harisma   (2008-02-28 16:28:00) [19]


> Sergey13 ©   (28.02.08 16:23) [7]
>
> > [0] harisma   (28.02.08 16:10)
>
> Заполни значениями временную таблицу и соедини с ней основную.
>

Так нельзя. Условия дальнейшего использования сформированного скрипта не позволяют

>Reindeer Moss Eater ©   (28.02.08 16:23) [8]

>То есть результирующий запрос должен получиться типа

>а какой типа получается?

А никакой


Ega23   (2008-02-28 16:27:00) [20]


> Лучше QuotedStr


В TSQL появилось QuotedStr?????
Иншалла!!!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо