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