2

我有一个存储过程 SP1,它使用 SELECT 语句返回两个表 T1 和 T2。我想在另一个存储过程 SP2 中对 T2 执行一些操作。有人可以指导我如何做到这一点吗?

4

1 回答 1

2

选项1

更改 SP1 以将 T2 保存到表中,此外还使用 SELECT 将其返回。然后将该表用作 SP2 的输入。

选项 2

如果您无法更改 SP1,则可以在表中捕获存储过程的输出。查看 StackOverflow 上的这个问题,了解如何使用 OPENROWSET 或提前定义临时表:How to SELECT * INTO [temp table] FROM [stored procedure]

如果 T1 和 T2 的定义不同,此选项将不起作用。如果它们具有相同的定义,您可以将两个结果集导入到一个表中,如下所示:

--create a temporary table with the same definition as T1 and T2
CREATE TABLE #temp (
    Col1 SOME DATATYPE,
    Col2 SOME DATATYPE
);

--fill your temp table with the result sets of T1 and T2
INSERT INTO #temp
EXEC [dbo].[SP1];

但是你必须处理 T1-plus-T2 表而不是 T2。

所以看来选项1是你最好的选择。

于 2012-08-22T08:48:50.867 回答