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

Откуда:
Сообщений: 60
Необходимо создать ряд процедур для последовательной обработки данных.
Первая процедура вызывает процедуру из прилинкованного сервера с другой базы
ALTER PROCEDURE [dbo].[GetDeposits]
...
into #deposits 
exec @Issue =scback.screpl.dbo.kri_GetDeposits @InDate , @OutDate

Затем требуется добавить поля из текущей базы
select d.*
 
, case  when p.statecode is null then 0 else 1 end  as partner
,CASE when depoyur='6' then 'Agenty' 
	else case when u.login IS null then 'Anonim'+convert(varchar(7) ,d.branchid) 
	else case when depoyur='1' AND p.statecode IS not null  then  r.login else u.login end end end as login

from  #deposits d
left join partners p
on p.Statecode=d.StateCode
left join users u
on u.login=d.login1
left join #regi r
on r.code=d.regionCode


Но если я пытаюсь в следующей процедуре опять сделать
into #deposits 1
exec =dbo.GetDeposits @InDate , @OutDate

Получаю ошибку INSERT EXEC statement cannot be nested

Пытался сделать через функцию,возвращающую таблицу, получил ошибку Недопустимое использование оператора "INSERT EXEC", оказывающего побочное действие, в функции .

Пробовал передавать временную таблицу как глобальную используя ##TempDB, В этом случае работает,но возникает проблема разделения данных временной таблицы для разных пользователей,поскольку таблица ##TempDB видна во всех сесиях.
Хорошего решения найти не удалось, как быть?
18 апр 13, 11:19    [14197126]     Ответить | Цитировать Сообщить модератору
 Re: Последовательная обработка данных в процедурах  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Постоянная таблица с идентификатором сессии и передача этого идентефикаторам между процками?
18 апр 13, 11:52    [14197481]     Ответить | Цитировать Сообщить модератору
 Re: Последовательная обработка данных в процедурах  [new]
Glory
Member

Откуда:
Сообщений: 104760
Roman35
Хорошего решения найти не удалось, как быть?

Наверное надо делать
into #deposits
exec @Issue =scback.screpl.dbo.kri_GetDeposits @InDate , @OutDate

ДО вызова всех процедур ?
18 апр 13, 11:59    [14197550]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить