SQL返回SELECT的输出而不是另一个存储过程的输出

时间:2017-11-15 16:43:12

标签: sql sql-server stored-procedures

如何返回SELECT的结果作为存储过程的输出?对不起,我是存储过程的新手!

在下面的查询中,我正在调用存储过程spCuExt_ExtractLog并将结果分配给变量@StartDate。然后,我在主存储过程中使用此变量,在SELECT语句中。我只需要从主存储过程返回SELECT语句的结果:

-- Main stored procedure
BEGIN
    DECLARE @StartDate DATETIME

    EXEC @StartDate = spCuExt_ExtractLog 'Customers'

    SELECT Id, [Name], LogoPath, IsDeleted
    FROM dbo.Customers 
    WHERE RecordCreatedDateUTC>= @StartDate
END

这会返回对spCuExt_ExtractLog的调用结果以及SELECT语句的结果,但我只想输出SELECT的结果。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

这是一个非常好的文档的链接,解释了解决问题的所有不同方法(尽管由于您无法修改现有的存储过程,因此很多方法都无法使用。)

http://www.sommarskog.se/share_data.html

答案 1 :(得分:1)

将结果放入表变量中:

create procedure dbo.usp_Child
as
begin
    select N'Hello world!' as [message];
end;
go

create procedure dbo.usp_Main
as
begin;
    declare @results table ([message] nvarchar(max));

    insert into @results
    execute dbo.usp_Child;

    select N'success';
end;
go

execute dbo.usp_Main;