SQL存储过程使用SELECT设置变量

Use*_*983 38 select stored-procedures sql-server-2005

我在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
)
Run Code Online (Sandbox Code Playgroud)

Joe*_*lli 72

select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
    from table1
    where IsCurrent = 1
Run Code Online (Sandbox Code Playgroud)


Mar*_*ith 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  
Run Code Online (Sandbox Code Playgroud)