Хранимая процедура SQL устанавливает переменные с помощью SELECT - PullRequest
38 голосов
/ 10 января 2011

У меня есть хранимая процедура в SQL Server 2005 с несколькими переменными, и я хочу установить значения этих переменных с помощью оператора 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
)

Ответы [ 2 ]

72 голосов
/ 10 января 2011
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
    from table1
    where IsCurrent = 1
14 голосов
/ 10 января 2011

Одно из преимуществ вашего текущего подхода состоит в том, что он вызовет ошибку, если предикат вернет несколько строк. Для воспроизведения этого вы можете использовать.

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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...