是否可以在另一个存储过程(sp2)中调用存储过程(sp1),该存储过程返回多个表结果?
我必须在执行的存储过程(sp2)中使用返回的结果。
据我所知,这是不可能的。但我想确定一下。
有没有其他方法可以达到这种要求?
答案 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中使用它