Sql 从存储过程返回多个输出

Sql 从存储过程返回多个输出,sql,sql-server-2008,stored-procedures,Sql,Sql Server 2008,Stored Procedures,可以使用将多个输出值返回到父存储过程 exec“存储过程名称”“inputval”“outval1”“outval2” exec sp_SubSalaryCalcuation @sec1_in,@sec1_out,@worktimefrm,@worktimeto,@out_timestatus OUTPUT,@out_status OUTPUT,@out_overtime OUTPUT 我需要调用这个存储过程 ALTER PROCEDURE [dbo].[sp_SubSalaryCalcuat

可以使用将多个输出值返回到父存储过程

exec“存储过程名称”“inputval”“outval1”“outval2”

exec sp_SubSalaryCalcuation @sec1_in,@sec1_out,@worktimefrm,@worktimeto,@out_timestatus OUTPUT,@out_status OUTPUT,@out_overtime OUTPUT
我需要调用这个存储过程

ALTER PROCEDURE [dbo].[sp_SubSalaryCalcuation] 
@out_overtime nvarchar(100) OUTPUT,
@out_status nvarchar(100) OUTPUT,
@out_overtimestatus nvarchar(100) OUTPUT,
@sec1_in nvarchar(200),
@sec1_out nvarchar(200),
AS
BEGIN
SET @out_status=@sec1_in
SET @out_overtime=0
SET @out_overtimestatus=0

END

对。你可以做到。您可以从另一个过程到父过程获取多个输出参数。考虑下面的例子。

注意:您应该按照
sp_subsalaryCalculation
过程中出现的相同顺序传递参数。

1。家长程序

CREATE PROCEDURE ParentProcedure

    @Param1 nvarchar(30)

AS
BEGIN

    DECLARE @out_timestatus nvarchar(100)
    DECLARE @out_status nvarchar(100)
    DECLARE @out_overtime nvarchar(100)

    SET NOCOUNT ON;

    -- Send parameters in the same order of sp_SubSalaryCalcuation
    exec sp_SubSalaryCalcuation 1,2,3,4,@out_timestatus OUTPUT,@out_status OUTPUT,@out_overtime OUTPUT

    PRINT @out_timestatus
    PRINT @out_status
    PRINT @out_overtime

END
GO
CREATE PROCEDURE sp_SubSalaryCalcuation 
@sec1_in nvarchar(200),
@sec1_out nvarchar(200),
@worktimefrm nvarchar(200),
@worktimeto nvarchar(200),
@out_overtime nvarchar(100) OUTPUT,
@out_status nvarchar(100) OUTPUT,
@out_overtimestatus nvarchar(100) OUTPUT

AS
BEGIN

    SET NOCOUNT ON;

    SET @out_overtime = 10
    SET @out_status = 20
    SET @out_overtimestatus = 30

END
GO
2。儿童程序

CREATE PROCEDURE ParentProcedure

    @Param1 nvarchar(30)

AS
BEGIN

    DECLARE @out_timestatus nvarchar(100)
    DECLARE @out_status nvarchar(100)
    DECLARE @out_overtime nvarchar(100)

    SET NOCOUNT ON;

    -- Send parameters in the same order of sp_SubSalaryCalcuation
    exec sp_SubSalaryCalcuation 1,2,3,4,@out_timestatus OUTPUT,@out_status OUTPUT,@out_overtime OUTPUT

    PRINT @out_timestatus
    PRINT @out_status
    PRINT @out_overtime

END
GO
CREATE PROCEDURE sp_SubSalaryCalcuation 
@sec1_in nvarchar(200),
@sec1_out nvarchar(200),
@worktimefrm nvarchar(200),
@worktimeto nvarchar(200),
@out_overtime nvarchar(100) OUTPUT,
@out_status nvarchar(100) OUTPUT,
@out_overtimestatus nvarchar(100) OUTPUT

AS
BEGIN

    SET NOCOUNT ON;

    SET @out_overtime = 10
    SET @out_status = 20
    SET @out_overtimestatus = 30

END
GO
父过程的
参数中的结果如下

x-----------------x----------x
|     Variable    |   Value  |
x-----------------x----------x
| @out_timestatus |   10     |
| @out_status     |   20     |
| @out_overtime   |   30     |
x-----------------x----------x

当然是。看看这里类似的问题: