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

时间:2016-12-15 16:00:34

标签: sql sql-server tsql

给出如下所示的存储过程:

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

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

EXEC [dbo].[GetBusinessUnitSysNameAndGroupNames] '~ModelAfter~', 'acmeoutdoors', 'admins'

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

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

1 个答案:

答案 0 :(得分:4)

  

使用OUTPUT参数返回数据

     

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

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

PRINT @Result1
PRINT @Result2