来自SQL Server 2008中存储过程的exec的SET表变量

时间:2012-02-01 00:42:49

标签: sql-server sql-server-2008

我不相信这是可能的,但是要确认您无法从SQL Server 2008中执行存储过程的结果中设置表变量。

我试图做以下事情:

DECLARE @Results TABLE (RESULT_ID INT);

INSERT INTO @Results (RESULT_ID) VALUES (1);

SET @Results = 
EXEC dbo.[spResultLookup] @Results;

我的目标是将@Results传递给存储过程,然后将@Results替换为调用spResultLookup的结果。

另一种方法是删除@Results中的行,并使用带有INSERT语句的EXEC

1 个答案:

答案 0 :(得分:0)

这是一个文档中的页面,演示了如何将表传递到procs中,但它明确规定您不能使用DML更新表。

http://msdn.microsoft.com/en-us/library/bb510489.aspx

当然,您可以创建一个临时表,该表可以在调用者和proc的范围内使用。这可能是您必须使用的用例。

CREATE table #tmp( id int, val VARCHAR(50))
go

CREATE PROC UpdateTmpTable as
begin
    insert into #tmp(id,val) values(1,'abc')
end
GO

exec dbo.UpdateTmpTable
select * from #tmp