1

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

这有效

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

但我需要这样的东西

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

上面的查询不起作用(这意味着我不能分配多个值),有没有办法让这件事成为可能?

提前致谢....

4

1 回答 1

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

这里没有问题......

于 2013-09-12T11:01:27.017 回答