Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Передача набора данных в параметр sp (MSSQL 7)

1 view
Skip to first unread message

Vladimir Ulchenko

unread,
Apr 18, 2002, 12:47:04 PM4/18/02
to
"Valery Makarenko" <maka...@al-yami.com.ua> wrote in message
news:a9mlu5$9oc$1...@ddt.demos.su...

> Имеется задача: клиент делает выборку из некоторой таблицы(справочника) T1
> В хранимой процедуре эта выборка должна использоваться для фильтрации
набора
> данных выбираемых из другой таблицы T2.
> Как передать в ХП эту выборку

например через третью таблицу
или
в строку собери айдишники и её передавай с дальнейшим разбором

--
Vladimir Ulchenko a.k.a. vavan
va...@santel.ru
ICQ 56152440

Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Ilya Knyazev

unread,
Apr 25, 2002, 8:59:22 AM4/25/02
to
Hello, Vladimir!
You wrote to Valery Makarenko on Thu, 18 Apr 2002 16:47:04 +0000 (UTC):

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


Vladimir Ulchenko

unread,
Apr 25, 2002, 10:28:01 AM4/25/02
to
"Ilya Knyazev" <kny...@group-sk.spb.ru> сообщил/сообщила в новостях
следующее: news:10197395...@x-files.mns.ru...

> VU> например через третью таблицу или в строку собери айдишники и её
> VU> передавай с дальнейшим разбором
>
> А вот так нельзя

конечно же можно

>, т.к. строка на MS-SQL не бесконечна...

как впрочем и везде, что само по себе очень хорошо, иначе наверное ему бы
пришлось её бесконечно обрабатывать? :))

--

Ilya Knyazev

unread,
Apr 27, 2002, 7:13:18 AM4/27/02
to
Hello, Vladimir!

You wrote to Ilya Knyazev on Thu, 25 Apr 2002 14:28:01 +0000 (UTC):

>> , т.к. строка на MS-SQL не бесконечна...

VU> как впрочем и везде, что само по себе очень хорошо, иначе наверное
VU> ему бы пришлось её бесконечно обрабатывать? :))

Пример:
строка varchar (8000)
длина параметра 8 символов
итого можно будет 888 параметров (т.к.) еще нужны разделители... это если
через ADO ходить... если, например идти через BDE то длина строки обрежется
до 255 символов.
отсюда:
1) мы не знаем изначально сколько параметров придется передать в sp.
2)если параметры не влезут в строку - мы встанем на грабли
3)SQL сервер не предназначен для разбора строк. Если TSQL позволяет написать
парсер, это еще не значит что так правильно.
4)темповые таблицы всех этих ограничений не имеют...

Убедил?

Vladimir Ulchenko

unread,
Apr 27, 2002, 7:56:09 AM4/27/02
to
"Ilya Knyazev" <kny...@group-sk.spb.ru> сообщил/сообщила в новостях
следующее: news:10199059...@x-files.mns.ru...

> >> , т.к. строка на 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)темповые таблицы всех этих ограничений не имеют...

очевидно, что _любые_ таблицы имеют ограничения на размер..

> Убедил?

:) в чём?

0 new messages