我在很多网站上都看到以下代码不起作用,其中@table_name是一个表变量:
INSERT INTO @table_name EXEC usp_name usp_param1, usp_param2
但是在SQL Server 2005(版本9.0.4035)中的存储过程中,上面的确切代码对我来说很好。
甚至MSDN(URL:http://msdn.microsoft.com/en-us/library/aa260638%28v=SQL.80%29.aspx)都提到如果在表变量上执行使用exec插入俱乐部的尝试,插入代码将不起作用。不幸的是,顶部的MSDN页面提到该页面适用于SQL Server 2000,这增加了混乱。
有人会对此有所了解吗?提前谢谢。
答案 0 :(得分:1)
等效的SQL 2008/2005 MSDN页面不同::
但是,表中不能使用 以下声明:
SELECT select_list INTO table_variable
这是因为SELECT ... INTO 创建目标表,并且create语义与变量范围语义不兼容。
支持 INSERT INTO @table EXEC ...
。您不能指定table-valued parameter,但这与表变量不同。