我有一个存储过程SP1,它使用SELECT语句返回两个表T1和T2。我想在另一个存储过程SP2中对T2执行某些操作。有人可以指导我如何做到这一点?
答案 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是你最好的选择。