我发现了一篇非常好的文章,详细介绍了如何传递表数据,并提到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
答案 0 :(得分:0)
内部实施限制。
如果需要捕获存储过程的输出,那么这些过程应该是一个表值函数来开始。最终,您可以使用CLR程序解决限制。