从不同版本的存储过程插入表
Posted
技术标签:
【中文标题】从不同版本的存储过程插入表【英文标题】:Insert into table from stored procedure with different versions 【发布时间】:2014-09-09 00:31:59 【问题描述】:有一个存储过程sp
和一个表变量@tbl
Insert into @tbl
Exec sp
上面的最初工作正常。
我们更改了存储过程的输出并添加了额外的输出列。上面的插入语句因存储过程的第二个版本而失败。
上述SQL需要与sp
的版本1和sp
的版本2一起工作
可以做什么?
从sp
输出插入时,SQL Server 不提供指定列名的选项
【问题讨论】:
不知道为什么有人会反对这个,这是一个很好的问题。 【参考方案1】:唯一的方法是使用EXECUTE
WITH RESULT SETS
来确定要从存储过程返回的确切列。这将使您可以选择从存储过程输出中指定要插入到表变量中的列名。
Insert into @tbl(col1, col2, col3) EXECUTE sp
WITH RESULT SETS (
(col1 INT,
col2 INT,
col3 nvarchar(50))
)
有关详细信息,请参阅here。
【讨论】:
以上是关于从不同版本的存储过程插入表的主要内容,如果未能解决你的问题,请参考以下文章
存储过程 将数据插入到临时表,再根据条件判断 插入到不同的表