【问题标题】: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 不提供指定列名的选项

【问题讨论】:

  • 不知道为什么有人会反对这个,这是一个很好的问题。

标签: sql 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

【讨论】:

    猜你喜欢
    • 2019-07-21
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多