如何将多个选择查询值分配给存储过程中的声明变量

时间:2013-09-12 10:38:14

标签: sql-server sql-server-2008 stored-procedures

如何在存储过程中将多个选择查询值分配给声明的变量?

这有效

SELECT @id = USER_ID 
FROM USERS 
WHERE EMAIL=@EMAIL

但我需要这样的东西

SELECT @id = USER_ID, @corp = CORPORATE_ID 
FROM USERS 
WHERE EMAIL = @EMAIL

上面的查询不起作用(这意味着我无法分配多个值),有什么办法可以做到这一点吗?

提前致谢....

1 个答案:

答案 0 :(得分:3)

我不知道你在做什么 - 但选择多个值并将它们分配给T-SQL中的多个变量就好 - 在存储过程的内部或外部。

如果您有AdventureWorks示例数据库 - 请尝试:

CREATE PROCEDURE dbo.GetAddressTypeDetails (@AddressTypeID INT, @Name VARCHAR(50) OUTPUT, @Modified DATETIME OUTPUT)
AS BEGIN
    SELECT
        @Name = Name, @Modified = ModifiedDate
    FROM
        [Person].[AddressType]
    WHERE
        [AddressTypeID] = @AddressTypeId
END

然后像这样执行这个存储过程:

DECLARE @AddressTypeID INT
DECLARE @Name VARCHAR(50) 
DECLARE @Modified DATETIME

-- TODO: Set parameter values here.
SET @AddressTypeID = 5

EXECUTE [dbo].[GetAddressTypeDetails] @AddressTypeID, @Name OUTPUT, @Modified OUTPUT

SELECT 
    @Name, @Modified

你会得到

的输出
Shipping   2002-06-01 00:00:00.000

这里没问题.....