调用存储过程返回多个表结果在另一个存储过程中

时间:2012-06-29 15:24:16

标签: sql sql-server stored-procedures

是否可以在另一个存储过程(sp2)中调用存储过程(sp1),该存储过程返回多个表结果?

我必须在执行的存储过程(sp2)中使用返回的结果。

据我所知,这是不可能的。但我想确定一下。

有没有其他方法可以达到这种要求?

2 个答案:

答案 0 :(得分:4)

您可以将INSERT INTO <table> EXEC <sp>用于一个结果集。

但这不适用于多个结果集。

你无法筑巢。 (SP2可以在调用SP1时使用它。但是如果它调用SP2,则SP3不能做同样的事情。)


如果您真的要返回多个结果集,则需要将结果插入表中。然后外部SP可以使用这些表。

如果外部SP创建临时表(CREATE TABLE #temp),那么内部SP可以看到它插入到其中。

同样可以使用永久表。我建议使用一个名为SPID的列,并使用@@ spid作为插入其中的值。 (@@ spid唯一地标识每个会话。)但是你必须记住在插入表格后清理。


所有这些选项都假设您可以修改两个SP。如果你不能,我不确定你是否可以在SQL Server中执行此操作。

答案 1 :(得分:0)

为此,您可以在SP2中创建临时表并在SP1中使用它