powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / временная таблица из другой хранимке
14 сообщений из 14, страница 1 из 1
временная таблица из другой хранимке
    #40051767
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем день.

А есть ли возможность использования временной таблицы созданной в одной из хранимок в другой х.п?
Я читал , что временные таблицы можно использовать в рамках одного сеанса, однако на деле оказывается , что в рамках хранимой процедуры где она создается. но может я неверно понимаю или док который я нашел не корректный.

к примеру вот это код не работает. Таблица #BUM_TOTAL "не знакома" после отработки exec . временные таблицы ## мне не подходят так как данные могут подхватить как раз другие сеансы и другие пользователи .

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
ALTER procedure [dbo].[SPK_ZAK_REP_PLAN_WITH_PAPER] (@num numeric(10) )
as
begin

Create table 
create table #BUM_TOTAL (
Mater    varchar(255),
TIP_BUMAGI    varchar(255),
BUM_NAME    varchar(255),
PLOTN_BUMAGI decimal(25,5),
ISH_FORMAT    varchar(255),
WEIGHT decimal(25,5) 
)
insert into #BUM_TOTAL
select * from MY_TABLE wherre NUM=@num

end


go

exec SPK_ZAK_REP_PLAN_WITH_PAPER (555)
select * from #BUM_TOTAL
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051789
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

У вас же в примере хп не вызывается из другой хп...
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051805
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
andron81,

У вас же в примере хп не вызывается из другой хп...


мне не хранимку надо вызывать из другой хранимки. мне надо делать выборку из временной таблицы созданную в другой хранимаой процедуры и набитой данными там же . переделал и упростил пример :

Код: sql
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.
34.
alter proc test1
as 
begin
create table #BUM_TOTAL (
Mater    varchar(255),
TIP_BUMAGI    varchar(255),
BUM_NAME    varchar(255),
PLOTN_BUMAGI decimal(25,5),
ISH_FORMAT    varchar(255),
WEIGHT decimal(25,5) 
)

insert into #BUM_TOTAL
 select 
NULL,
'test1',
'rest2',
55,
'90x60',
555
select 'from test1',* from #BUM_TOTAL
end
go

alter proc test2
as 
begin
select 'from test2', * from #BUM_TOTAL
end
go


exec test1
exec test2



from test1 NULLtest1rest 55.00000 90x60 555.00000

сообщение: 208, уровень: 16, состояние: 0, процедура: test2, строка: 5 [строка начала пакета: 30]
Недопустимое имя объекта "#BUM_TOTAL".
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051809
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я создаю времянку в действующем сеансе обычным запросом select * into #..... from .... where 1=2
и использую ее в любом месте и в любой ХП.
Есть даже возможность ее пересоздания на случай потери коннекта.

Времянка, созданная в ХП будет видна только внутри этой ХП.
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051813
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Я создаю времянку в действующем сеансе обычным запросом select * into #..... from .... where 1=2
и использую ее в любом месте и в любой ХП.
Есть даже возможность ее пересоздания на случай потери коннекта.

Времянка, созданная в ХП будет видна только внутри этой ХП.


мне надо именно в хранимой процедуре.
так необходимо потому, что есть отчет кристал репортс где в футере надо отработать итоговую таблицу из данных составленных из основных данных, делать я это собирался сабрепорторм. вот для чего это
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051816
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Я создаю времянку в действующем сеансе обычным запросом select * into #..... from .... where 1=2
и использую ее в любом месте и в любой ХП.
Есть даже возможность ее пересоздания на случай потери коннекта.

Времянка, созданная в ХП будет видна только внутри этой ХП.


я почему-то думал , что это в одном сеансе :

Код: sql
1.
2.
exec test1
exec test2
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051822
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вариант, когда процедура не сохраняет данные во временной таблице, а выводит их, а код после этой процедуры их перенаправляет во временную переменную, Вас не устроит?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
ALTER procedure [dbo].[SPK_ZAK_REP_PLAN_WITH_PAPER] (@num numeric(10) )
as
begin
	select * from MY_TABLE where NUM=@num
end

go
declare @BUM_TOTAL table (
Mater    varchar(255),
TIP_BUMAGI    varchar(255),
BUM_NAME    varchar(255),
PLOTN_BUMAGI decimal(25,5),
ISH_FORMAT    varchar(255),                                                                                                                                                                        WEIGHT decimal(25,5) 
)

insert into @BUM_TOTAL exec SPK_ZAK_REP_PLAN_WITH_PAPER (555)
select * from @BUM_TOTAL
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051823
redsunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81,
создайте во временной ## таблице поле SPID, засовывайте в нее текущий @@SPID
из другой процедуры читайте с условием SPID = @@SPID
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051824
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redsunrise
andron81,
создайте во временной ## таблице поле SPID, засовывайте в нее текущий @@SPID
из другой процедуры читайте с условием SPID = @@SPID


я думал над этим. плохо понимаю разницу ## с обычной "стационарной" таблицей . поэтому боюсь , что ## будет разрастаться. и её придется чистить. правда сейчас я подумал, что можно делать delete ## where SPID = после отработки второй хранимки. сейчас попробую. Этот метод мне не нравится изначально, но если ничего больше нельзя , то придется его
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051826
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi
А вариант, когда процедура не сохраняет данные во временной таблице, а выводит их, а код после этой процедуры их перенаправляет во временную переменную, Вас не устроит?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
ALTER procedure [dbo].[SPK_ZAK_REP_PLAN_WITH_PAPER] (@num numeric(10) )
as
begin
	select * from MY_TABLE where NUM=@num
end

go
declare @BUM_TOTAL table (
Mater    varchar(255),
TIP_BUMAGI    varchar(255),
BUM_NAME    varchar(255),
PLOTN_BUMAGI decimal(25,5),
ISH_FORMAT    varchar(255),                                                                                                                                                                        WEIGHT decimal(25,5) 
)

insert into @BUM_TOTAL exec SPK_ZAK_REP_PLAN_WITH_PAPER (555)

select * from @BUM_TOTAL





надо чтобы через храмки обязательно. у меня ведь кристал репортс
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051830
redsunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81
redsunrise
andron81,
создайте во временной ## таблице поле SPID, засовывайте в нее текущий @@SPID
из другой процедуры читайте с условием SPID = @@SPID


я думал над этим. плохо понимаю разницу ## с обычной "стационарной" таблицей . поэтому боюсь , что ## будет разрастаться. и её придется чистить. правда сейчас я подумал, что можно делать delete ## where SPID = после отработки второй хранимки. сейчас попробую. Этот метод мне не нравится изначально, но если ничего больше нельзя , то придется его


как вариант можете из одной процедуры в другую через табличную переменную передавать или в первой процедуре возвращать select, а во второй писать результат вызова в какую нить таблицу.
Вообще сколько людей столько и мнений, кто то привык делать так кто то по другому. Еще многое зависит от того какая практика считается нормой в вашей организации.
Но я бы сделал через SPID с постоянной таблицей если предполагается что работа идет через сеансы.
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051832
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторнадо чтобы через храмки обязательно. у меня ведь кристал репортс Ну так создайте ее прямо в программе (в основном коннекте или в коннекте, который используется репортом) перед запуском отчета. Отчет ее увидит.
Чистить ВТ - нормальная практика.
Хотя я так понимаю, если Кристалл использует собственный коннект... тогда увидеть ВТ не удастся :(

Мы с кристалом поступали так: записывали результат репорта в ACCESS-таблицу и открывали эту таблицу кристалом. По скорости было вполне приемлимо.
Хоть это изврат, но другого выхода не было.
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051834
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
авторнадо чтобы через храмки обязательно. у меня ведь кристал репортс
Ну так создайте ее прямо в программе (в основном коннекте или в коннекте, который используется репортом) перед запуском отчета. Отчет ее увидит.
Чистить ВТ - нормальная практика.

нет доступа к программе. только к хранимкам MS SQL Server.

надо похоже делать как советовал товарищ при помощи @@SPID. А таблицу делать постоянную.
...
Рейтинг: 0 / 0
временная таблица из другой хранимке
    #40051846
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

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


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