我在SQL Server 2005中有一个包含多个变量的存储过程,我想使用select语句设置这些变量的值。所有三个变量都来自同一个表,应该有一种方法可以使用一个select语句来设置它们,而不是我现在拥有的方式,如下所示。请帮我解决一下。
DECLARE @currentTerm nvarchar(max)
DECLARE @termID int
DECLARE @endDate datetime
SET @currentTerm =
(
Select CurrentTerm from table1 where IsCurrent = 1
)
SET @termID =
(
Select TermID from table1 where IsCurrent = 1
)
SET @endDate =
(
Select EndDate from table1 where IsCurrent = 1
)
答案 0 :(得分:71)
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
from table1
where IsCurrent = 1
答案 1 :(得分:14)
当前方法的一个优点是,如果谓词返回多行,则会引发错误。重现你可以使用。
SELECT @currentTerm = currentterm,
@termID = termid,
@endDate = enddate
FROM table1
WHERE iscurrent = 1
IF( @@ROWCOUNT <> 1 )
BEGIN
RAISERROR ('Unexpected number of matching rows',
16,
1)
RETURN
END