错误:INSERT EXEC语句不能以递归方式嵌套在带有SP的临时表中

时间:2015-08-07 08:37:03

标签: sql sql-server insert exec

我正在努力实现这个目标

WHILE @@FETCH_STATUS = 0
BEGIN
    INSERT INTO #TRSupervisors
      EXEC [stpEmployee_getExpiryDateSupervisors] '0000912479', '100', @TRplant, 'ILOD', 1, 0
    FETCH NEXT FROM TRcurPlant INTO @TRplant
END

执行时我收到的错误信息是。

  

消息8164,级别16,状态1,过程stpEmployee_getExpiryDateSupervisors,第87行
  无法嵌套INSERT EXEC语句。

如果我在没有insert语句的情况下执行它,就像这样:

WHILE @@FETCH_STATUS = 0
BEGIN
    --insert into #TRSupervisors
    EXEC [stpEmployee_getExpiryDateSupervisors] '0000912479', '100', @TRplant, 'ILOD', 1, 0
    FETCH NEXT FROM TRcurPlant INTO @TRplant
END

我能够获得所需的输出。

请建议一种将输出保存到临时表的方法。

1 个答案:

答案 0 :(得分:0)

为此找到解决方案。问题是SP在内部递归调用另一个SP而另一个SP正在插入数据。所以我在主SP中替换了定义而不是SP调用。这解决了这个问题。