2

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

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

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

有没有其他方法可以实现这种要求?

4

2 回答 2

4

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

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

而且你不能嵌套它。 (SP2 在调用 SP1 时可以使用它。但如果 SP3 调用 SP2,则不能做同样的事情。)


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

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

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


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

于 2012-06-29T15:42:14.357 回答
0

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

于 2012-06-29T15:39:32.823 回答