我不相信这是可能的,但是要确认您无法从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
。
答案 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