2014-09-18 3 views
0

Я хотел бы знать, если это возможно, и как иметь временную таблицу в качестве выходного параметра в хранимой процедуре. Я знаю, что обычные таблицы не могут быть изменены с помощью UPDATE и являются только таблицами READONLY, поэтому я думал об использовании временных таблиц. Но я не понимаю, как передать их в хранимой процедуре и как иметь их в качестве вывода:Таблица Temp в качестве выходного параметра в хранимой процедуре

CREATE TABLE #tableBER (ID INT NOT NULL IDENTITY PRIMARY KEY, VAL INT NOT NULL DEFAULT 0); 
CREATE TABLE #tableRL (ID INT NOT NULL IDENTITY PRIMARY KEY, VAL INT NOT NULL DEFAULT 0); 

ALTER PROCEDURE [dbo].[getFound] 
    @ber #tableBER OUTPUT, 
    @rl #tableRL OUTPUT, 
AS 
BEGIN 
    ... 
    UPDATE @ber ... --UPDATE 
    UPDATE @rl ... 

    SELECT @ber; -- RETURN THE TWO TABLES 
    SELECT @rl; 
END; 

Можно ли сделать такую ​​вещь? Спасибо!

ответ

3

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

create procedure DoStuff 
as 
    insert into #TTT (ID) values (1),(2),(3) 

и использование:

create table #TTT(ID int not null) 
exec DoStuff 
select * from #TTT 

Результаты:

ID 
----------- 
1 
2 
3 
Смежные вопросы