【问题标题】:Insert into a table from a stored procedure with multiple output sets is not working从具有多个输出集的存储过程插入表不起作用
【发布时间】:2016-02-12 05:21:30
【问题描述】:

我需要从存储过程输出中填充一个表。我试过下面的查询。

DECLARE @Result AS TABLE (ouid int, value1 nvarchar(max), value2 nvarchar(max), value3 nvarchar(max))

insert into @Result (value1 ,value2, value3)
    exec [USP_Getofficevalues] 1, NULL, NULL

但我在执行过程中遇到了错误:

INSERT EXEC 语句不能嵌套。

列名或提供的值数与表不匹配 定义。

我发现这个错误是因为存储过程有多个结果集,像这样:

officedetails
-------------
500000

value1
-----
1000

value2
-----
500

value3
-----
800

如何处理上述情况?感谢您的帮助。

【问题讨论】:

  • 是否可以将存储过程更改为在单个结果集中返回?
  • 没有。它已经在使用 sp 。我无法改变它

标签: sql sql-server tsql stored-procedures sql-server-2012


【解决方案1】:

由于返回的结果集都是单列同类型,所以可以声明一个表变量并存储结果:

declare @r table
(
    id int identity,
    value int
)

insert into @r(value)
exec [USP_Getofficevalues] 1, NULL,NULL

之后,您只需将@r 转置到您的@result 表中。

【讨论】:

    【解决方案2】:

    检查您的程序 USP_Getofficevalues。

    我认为它在里面使用 Insert into 如果您在调用时将其用作插入,则不允许这样做。

    【讨论】:

      猜你喜欢
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      相关资源
      最近更新 更多