临时表作为存储过程中的输出参数
Posted
技术标签:
【中文标题】临时表作为存储过程中的输出参数【英文标题】:Temp Table as Output Parameter in Stored Procedure 【发布时间】:2014-09-18 07:23:54 【问题描述】:我想知道是否有可能以及如何在存储过程中使用临时表作为输出参数。我知道普通表不能用 UPDATE 修改,并且只是 READONLY 表,所以我想到了使用临时表。但我不明白如何将它们传递给存储过程以及如何将它们作为输出:
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;
这样可以吗?谢谢!
【问题讨论】:
【参考方案1】:存储过程可以引用和使用在外部范围内创建的临时表。无需将它们标记为参数,只需创建表,调用存储过程,然后检查内容即可:
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
【讨论】:
以上是关于临时表作为存储过程中的输出参数的主要内容,如果未能解决你的问题,请参考以下文章