从不同版本的存储过程插入表

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。

【讨论】:

以上是关于从不同版本的存储过程插入表的主要内容,如果未能解决你的问题,请参考以下文章

将数据从存储过程插入临时表

如何从存储过程返回的游标将数据插入临时表

使用存储过程将数据插入从其他表派生的表中

存储过程 将数据插入到临时表,再根据条件判断 插入到不同的表

如何执行存储在 MySQL 中的将 ID 从一个表插入到另一个表的过程?

mysql使用存储过程插入数据后,参数为中文的为?或乱码