web-dev-qa-db-ja.com

SELECTを使用したSQLストアドプロシージャ変数の設定

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
)
38
User_1983
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
    from table1
    where IsCurrent = 1
72
Joe Stefanelli

現在のアプローチの利点の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  
14
Martin Smith