> Имеется задача: клиент делает выборку из некоторой таблицы(справочника) T1
> В хранимой процедуре эта выборка должна использоваться для фильтрации
набора
> данных выбираемых из другой таблицы T2.
> Как передать в ХП эту выборку
например через третью таблицу
или
в строку собери айдишники и её передавай с дальнейшим разбором
--
Vladimir Ulchenko a.k.a. vavan
va...@santel.ru
ICQ 56152440
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
VU> "Valery Makarenko" <maka...@al-yami.com.ua> wrote in message
VU> news:a9mlu5$9oc$1...@ddt.demos.su...
>> данных выбираемых из другой таблицы T2.
>> Как передать в ХП эту выборку
VU> например через третью таблицу или в строку собери айдишники и её
VU> передавай с дальнейшим разбором
А вот так нельзя, т.к. строка на MS-SQL не бесконечна...
С Уважением,
Ilya Knyazev. E-mail: kny...@kill-spam.group-sk.spb.ru
> VU> например через третью таблицу или в строку собери айдишники и её
> VU> передавай с дальнейшим разбором
>
> А вот так нельзя
конечно же можно
>, т.к. строка на MS-SQL не бесконечна...
как впрочем и везде, что само по себе очень хорошо, иначе наверное ему бы
пришлось её бесконечно обрабатывать? :))
--
>> , т.к. строка на MS-SQL не бесконечна...
VU> как впрочем и везде, что само по себе очень хорошо, иначе наверное
VU> ему бы пришлось её бесконечно обрабатывать? :))
Пример:
строка varchar (8000)
длина параметра 8 символов
итого можно будет 888 параметров (т.к.) еще нужны разделители... это если
через ADO ходить... если, например идти через BDE то длина строки обрежется
до 255 символов.
отсюда:
1) мы не знаем изначально сколько параметров придется передать в sp.
2)если параметры не влезут в строку - мы встанем на грабли
3)SQL сервер не предназначен для разбора строк. Если TSQL позволяет написать
парсер, это еще не значит что так правильно.
4)темповые таблицы всех этих ограничений не имеют...
Убедил?
> >> , т.к. строка на MS-SQL не бесконечна...
>
> VU> как впрочем и везде, что само по себе очень хорошо, иначе наверное
> VU> ему бы пришлось её бесконечно обрабатывать? :))
>
> Пример:
> строка varchar (8000)
> длина параметра 8 символов
> итого можно будет 888 параметров (т.к.) еще нужны разделители... это если
если заменишь на text то (2^31-1) div 9=238609294 что несколько больше чем
888 хотя и не так красиво :)
> через ADO ходить... если, например идти через BDE то длина строки
обрежется
> до 255 символов.
в наше время через BDE к MSSQL лучше вообще не ходить.. :)
> отсюда:
> 1) мы не знаем изначально сколько параметров придется передать в sp.
почему не знаем?? передаём столько сколько нужно
> 2)если параметры не влезут в строку - мы встанем на грабли
с учётом вышеуказанного можно абстрагироваться от этих граблей :)
> 3)SQL сервер не предназначен для разбора строк. Если TSQL позволяет
написать
> парсер, это еще не значит что так правильно.
предназначение MSSQL обсуждать не берусь как впрочем и критерии
правильности, смешно :))
кстати не факт что требуемая задача потребует написания парсера, вполне
возможно что достаточно будет построить динамический sql где переданная
строка с т.н. "айдишниками" (сорри за корявый термин) тупо войдёт в
IN-выражение
> 4)темповые таблицы всех этих ограничений не имеют...
очевидно, что _любые_ таблицы имеют ограничения на размер..
> Убедил?
:) в чём?