如何从另一个存储过程调用具有两个OUTPUT参数的存储过程

问题描述 投票:3回答:3

如果之前有人问过这个问题,我会道歉,但我找不到任何对我有用的东西。

我有一个存储过程有两个OUTPUT参数:

CREATE PROCEDURE dbo.xxx
    .
    .
    .
    @param1 INT OUTPUT,
    @param2 INT OUTPUT 
AS

我想从另一个存储过程调用它。

我知道如果有一个OUTPUT参数怎么做,但我不知道如何调用它所以我也得到了第二个的值。有任何想法吗?

提前致谢 :)

sql sql-server
3个回答
4
投票

这是一种方法:

具有两个输出参数的示例过程

CREATE PROCEDURE SumAndMultiply
(
    @In int,
    @OutSum int output,
    @OutMultiply int output
)
AS

    SELECT  @OutSum = @In + @In,
            @OutMultiply = @In * @In

GO

执行第一个的示例过程:

CREATE PROCEDURE executeSumAndMultiply
(
    @In int
)
AS

DECLARE @Out1 int, 
        @Out2 int

EXEC SumAndMultiply @In = @In, @OutSum = @Out1 OUTPUT, @OutMultiply = @Out2 OUTPUT

SELECT @Out1 As Out1, @Out2 As Out2

GO

执行第二个程序:

EXEC executeSumAndMultiply 3

结果:

Out1    Out2
6        9

See a live demo on rextester


0
投票

尝试按照以下方法,我给出一个示例

CREATE PROCEDURE usp_NestedSP
    @CurrentDate DATETIME OUT
AS
BEGIN
    SET @CurrentDate = GETDATE()
END
GO
--Nested SP which accepts OUTPUT parameter
CREATE PROCEDURE usp_MainSP
AS
BEGIN
    DECLARE @CurrentDate DATETIME
    EXEC [usp_NestedSP] @CurrentDate OUTPUT
    SELECT @CurrentDate AS 'ResultFromNestedSP'

END
GO

EXEc usp_MainSP

0
投票
create procedure first_proc(@p1 int, @p2 int out, @p3 int out)
as
    set @p2 = 1;
    set @p3 = 10;
GO
create procedure second_proc
as
    declare @f1 int;
    declare @f2 int;

    exec dbo.first_proc 10, @f1 out, @f2 out;

    select 'Returned values:' t, @f1, @f2;
GO
exec dbo.second_proc;
GO
t                | (No column name) | (No column name)
:--------------- | ---------------: | ---------------:
Returned values: |                1 |               10

dbfiddle here

© www.soinside.com 2019 - 2024. All rights reserved.