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

Откуда:
Сообщений: 365
надо передать талицу как параметр между ддвумя последовательными вызовами процедур
(RS - основной отчет и подотчет).
Естественно (путем проб) оказалость что табличного параметра вторая процедура не видит (наверно не увидит и табличной функции и переменной).
На ##tmp подлчет в дизайне пероиодически ругается при изменении датасета.
Пытался красиво пердать строкой - но привыборе всего - строка 70000 символов (10000 чел. с разделителями). Отчет режет строку - хуже тото даже ошибки нет.
Сейчас делаю в процедуре постоянную таблицу (предварительно drop ее). (select into)
Но как-то кажется не очень красиво и если несколько человек будет отражаться - не будет ли проблем?
24 авг 12, 13:27    [13059612]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
sti
Member

Откуда:
Сообщений: 769
http://msdn.microsoft.com/ru-ru/library/ms175010
24 авг 12, 13:37    [13059665]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
philips
Member

Откуда:
Сообщений: 365
Переменная table ведет себя как локальная переменная. Она имеет точно определенную область применения. Это функция, хранимая процедура или пакет, в котором она объявлена.
Вызвать ее я должен в другой процедуре
24 авг 12, 13:39    [13059681]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
iap
Member

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

обычная временная таблица #tmp, созданная до вызова первой процедуры,
будет видна и в первой, и в последующих.
И мешать никому не будет, ибо локальная.

Однако, можно создать тип табличной переменной, процедуры с параметром этого типа,
объявить и заполнить табличную переменную этого типа и передавать её в параметре процедур и функций,
правда, только в режиме READONLY
24 авг 12, 13:39    [13059688]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
philips
Member

Откуда:
Сообщений: 365
C этого я начинал
После создания переменной типа table ее можно передать процедуре.

После выхода процедуры из области параметр, возвращающий табличное значение, становится недоступным. Определение типа остается, пока не будет удалено.


И я что -то не понял
24 авг 12, 13:50    [13059750]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
philips
C этого я начинал
После создания переменной типа table ее можно передать процедуре.

После выхода процедуры из области параметр, возвращающий табличное значение, становится недоступным. Определение типа остается, пока не будет удалено.


И я что -то не понял
После выхода процедуры из какой области?
Приведите скрипт.
24 авг 12, 14:03    [13059819]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
philips
Member

Откуда:
Сообщений: 365
Там нет скрипта.
Это Repprt Service
Запускаем основной отчет - он выполняет процедуру - формирует таблицу.
Затем он выполняет подотчет в нем выполняется своя процедура с переданными параметрами
24 авг 12, 14:06    [13059850]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
philips,

А что мешает сериализовать данные в xml и затем передать суботчёт ?
24 авг 12, 14:19    [13059962]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 передать таблицу как параметр между 2 отдельными вызовами процедур  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
philips,

с Report Service не работал, но в наших подобных отчётах основная процедура возвращает два набора данных - для основного отчёта и для подотчёта. Умеет ли Report Service работать с такими процедурами - не знаю.
24 авг 12, 14:55    [13060282]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить