从SQL Server存储过程获取最后一个表

时间:2012-08-22 07:08:03

标签: sql-server

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

1 个答案:

答案 0 :(得分: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是你最好的选择。