从存储过程插入到具有不同版本的表中

时间:2014-09-09 00:32:00

标签: sql sql-server

存储过程sp和表变量@tbl

Insert into @tbl
  Exec sp

以上工作原理很好。

我们更改了存储过程输出并添加了其他输出列。上面的insert语句失败,存储过程的第二个版本。

以上SQL需要使用sp版本1和sp版本2

可以做些什么?

sp输出执行插入时,SQL Server不提供指定列名的选项

1 个答案:

答案 0 :(得分:6)

唯一的方法是使用EXECUTE WITH RESULT SETS来确定从存储过程返回的确切列。这将为您提供指定要从存储过程输出插入表变量的列名的选项。

Insert into @tbl(col1, col2, col3) EXECUTE sp
WITH RESULT SETS (
    (col1 INT, 
     col2 INT,
     col3 nvarchar(50))
)

有关详细信息,请参阅here