SQL Server 2005に複数の変数を含むストアドプロシージャがあり、selectステートメントを使用してこれらの変数の値を設定したい。 3つの変数はすべて同じテーブルからのものであり、以下に示すように、現在の方法ではなく、1つの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
現在のアプローチの利点の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