将存储过程的结果保存到变量

Pix*_*aul 3 sql t-sql sql-server

给定一个存储过程,如下所示:

CREATE PROCEDURE [dbo].[GetBusinessUnitSysNameAndGroupNames] 
    @ModelAfter varchar(100),
    @BusinessUnitSystemName varchar(100) OUT,
    @GroupsName varchar(4000) OUT
AS
BEGIN
    if (@ModelAfter = 'Corporate') 
    BEGIN
        SET @GroupsName = 'Admins'
        SET @BusinessUnitSystemName = 'AcmeOutdoors'
    END 
    else if (@ModelAfter = 'Retailers')
    BEGIN
        SET @GroupsName = 'Sellers'
        SET @BusinessUnitSystemName = 'AcmeShoppers'
    END
END
Run Code Online (Sandbox Code Playgroud)

当我从SQL Studio命令行运行时:

EXEC [dbo].[GetBusinessUnitSysNameAndGroupNames] '~ModelAfter~', 'acmeoutdoors', 'admins'
Run Code Online (Sandbox Code Playgroud)

我只是在消息面板中得到一个结果,Command(s) completed successfully.但我希望看到的是实际结果,而不仅仅是成功消息。如下图所示(这不起作用,只是我的想法)。

DECLARE @Result varchar(max)
SET @Result = EXEC [dbo].[GetBusinessUnitSysNameAndGroupNames] '~ModelAfter~', 'acmeoutdoors', 'admins'
PRINT @Result
Run Code Online (Sandbox Code Playgroud)

McN*_*ets 5

使用OUTPUT参数返回数据

如果在过程定义中为参数指定OUTPUT关键字,则存储过程退出时,存储过程可以将参数的当前值返回给调用程序。要将参数的值保存在可以在调用程序中使用的变量中,在执行存储过程时,调用程序必须使用OUTPUT关键字。

DECLARE @Result1 varchar(max), @Result2, varchar(max)
EXEC [dbo].[GetBusinessUnitSysNameAndGroupNames] 'Corporate', @Result1 OUT, @Result2 OUT

PRINT @Result1
PRINT @Result2
Run Code Online (Sandbox Code Playgroud)