powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Передача объектов между ХП
7 сообщений из 7, страница 1 из 1
Передача объектов между ХП
    #32045381
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто-нибудь подскажет как при вызове ХП2 из ХП1 получить доступ к созданной в ХП2 временной таблице. По документациям при запуске ХП2 в другой ХП1, ХП1 получает доступ ко всем объектам созданным ХП2
А мне выдает ошибку инвалидного объекта
...
Рейтинг: 0 / 0
Передача объектов между ХП
    #32045384
ms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ms
Гость
Временные таблицы(#table) видны только в родившей их процедуре.Надо использовать глобальные временные таблицы (##table)
...
Рейтинг: 0 / 0
Передача объектов между ХП
    #32045396
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да но при этом доступ к ней получат и другие. Впрочем, поясню свою проблему подробнее, может есть более элегантное решение.

Есть процедура Себестоимость, которая рассчитывает себестоимость на определенную дату. Результат выводится во временную таблицу

Далее, есть процедура Отчет, которая использует рассчитанные значения из временной таблицы, полученной в процедуре Себестоимость для своих расчетов. Итогом является рекордсет. Сейчас я просто повторяю код процедуры Себестоимость в теле Отчет, а хотелось бы этого избежать.
...
Рейтинг: 0 / 0
Передача объектов между ХП
    #32045458
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО нужно объединить обе процедуры в общий контекст :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
create procedure usp_P1; 1 
as
 /* версия, создающая таблицу */ 
select * into #tmp1 from sysobjects 
go

create procedure usp_P1; 2 
as
 /* версия для выгрузки в готовую таблицу */ 
insert #tmp1 select * from sysobjects
go

create procedure usp_P2
as
 /* проверка таблицы видимости в контексте */ 
select * from #tmp1
go

create procedure usp_P3
as
 /* объединяющая процедура (общий контекст) */ 
begin
     /* создаем временную таблицу нужной структуры */   
    select top  0  * into #tmp1 from sysobjects 
     /* заполняем ее */ 
    exec usp_p1; 2 
     /* показываем результаты */ 
    exec usp_p2
end
go

 /* проверяем */ 
exec usp_p3
go

Проверено MS SQL7 + SP3
...
Рейтинг: 0 / 0
Передача объектов между ХП
    #32045471
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2000 можно вместо процедуры 1 использовать функцию табличного типа. Как я понимаю работает это так-же как и временная таблица.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create function func(@par int)
returns table
as select * from table where id = @par
go

create procedure proc(@par int)
as
select * from table1 t1 
  inner join dbo.func(@par) t2 on t1.id = t2.id
go
...
Рейтинг: 0 / 0
Передача объектов между ХП
    #32045552
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Jimmy!
...
Рейтинг: 0 / 0
Передача объектов между ХП
    #32045554
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MaratIsk

На здоровье. Рад, что сумел помочь.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Передача объектов между ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]