在SELECT语句中为一个列设置多个变量

4

我需要在SQL Server存储过程中设置多个变量。目前,我使用单独的SELECT语句来设置每个变量。我不知道是否有更好/更有效的方法。这是2个变量的示例,但总共有8个变量。

DECLARE @source nvarchar(250)
DECLARE @target nvarchar(250) 

SET @source = (SELECT Value FROM ApplicationSetting WHERE Key = 'Source')
SET @target = (SELECT Value FROM ApplicationSetting WHERE Key = 'Target')

目前,我使用8个单独的选择语句来设置每个变量。这是设置这么多变量的最有效方法吗?

1个回答

4
在一个单一的select语句中,我们可以使用条件聚合来同时赋值变量。
试试这种方式。
DECLARE @source NVARCHAR(250)
DECLARE @target NVARCHAR(250)

SELECT @source = Max(CASE WHEN KEY = 'Source' THEN Value END),
       @target = Max(CASE WHEN KEY = 'Target' THEN Value END)
FROM   ApplicationSetting
WHERE  KEY IN( 'Source', 'Target' ) 

太好了!我之前不知道如何使用CASE,加上MAX就解决了。谢谢! - Gloria Santin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接