Ответ 1
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
from table1
where IsCurrent = 1
У меня есть хранимая процедура в 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
)
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
from table1
where IsCurrent = 1
Одно из преимуществ вашего текущего подхода состоит в том, что оно вызывает ошибку, если предикат возвращает несколько строк. Воспроизведение, которое вы можете использовать.
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