我有一个存储过程 SP1,它使用 SELECT 语句返回两个表 T1 和 T2。我想在另一个存储过程 SP2 中对 T2 执行一些操作。有人可以指导我该怎么做吗?
最佳答案
选项 1
除了使用 SELECT 返回 T2 之外,还更改 SP1 以将 T2 保存到表中。然后使用该表作为 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 是您最好的选择。
关于sql-server - 从 SQL Server 存储过程获取最后一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12067934/