为什么INSERT EXEC存储过程不能嵌套?

时间:2010-01-04 18:12:16

标签: sql-server-2005

我发现了一篇非常好的文章,详细介绍了如何传递表数据,并提到INSERT EXEC样式表数据共享(http://www.sommarskog.se/share_data.html#INSERTEXEC)的缺点是不允许嵌套?

换句话说[至少在SQL Server 2005中],在PROC1下面的伪代码中,INSERT EXEC会在运行时出错。我想知道是否有人知道这是为什么。

CREATE PROC1
AS
  --Fill table variable with data from somewhere
  INSERT INTO @tbl EXECUTE spI_Return_Data

  -- Do some stuff to the data

  -- 'Return' it
  SELECT * FROM @tbl
GO

CREATE PROC2
AS
  --Fill table variable with data from PROC1
  INSERT INTO @tbl EXECUTE PROC1

  -- Do some stuff to the data

  -- 'Return' it
  SELEC * FROM @tbl
GO

1 个答案:

答案 0 :(得分:0)

内部实施限制。

如果需要捕获存储过程的输出,那么这些过程应该是一个表值函数来开始。最终,您可以使用CLR程序解决限制。