如何将多个选择查询值分配给存储过程中声明的变量?
这有效
SELECT @id = USER_ID
FROM USERS
WHERE EMAIL=@EMAIL
但我需要这样的东西
SELECT @id = USER_ID, @corp = CORPORATE_ID
FROM USERS
WHERE EMAIL = @EMAIL
上面的查询不起作用(这意味着我不能分配多个值),有没有办法让这件事成为可能?
提前致谢....
如何将多个选择查询值分配给存储过程中声明的变量?
这有效
SELECT @id = USER_ID
FROM USERS
WHERE EMAIL=@EMAIL
但我需要这样的东西
SELECT @id = USER_ID, @corp = CORPORATE_ID
FROM USERS
WHERE EMAIL = @EMAIL
上面的查询不起作用(这意味着我不能分配多个值),有没有办法让这件事成为可能?
提前致谢....
我不知道你在做什么——但是在 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
这里没有问题......