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

rad*_*dar 3 sql sql-server

有一个存储过程sp和一个表变量@tbl

Insert into @tbl
  Exec sp
Run Code Online (Sandbox Code Playgroud)

以上工作原理很好.

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

上面的SQL需要与版本1 sp和版本2一起使用sp

可以做些什么?

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

Don*_*nal 6

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

Insert into @tbl(col1, col2, col3) EXECUTE sp
WITH RESULT SETS (
    (col1 INT, 
     col2 INT,
     col3 nvarchar(50))
)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此处.