2013-11-26 3 views
14

case文で変数を設定することはできますか?私のコードは動作しません。皆さんありがとう。SQL Server:CASE文で変数を設定する

CREATE PROCEDURE spReport 
@q1 INT, 
@q2 INT 
AS 
BEGIN 

-- Dates for the 2 different quarters to be viewed 
DECLARE @StartDateQ1 DATETIME 
DECLARE @EndDateQ1 DATETIME 
DECLARE @StartDateQ2 DATETIME 
DECLARE @EndDateQ2 DATETIME 

SELECT 
CASE @q1 
    WHEN 1 THEN SET @StartDateQ1 = '20130401' 
END 
+2

、 'CASE'が値を返す**表現**です - あなたは' CASE内のコード・ブロックを持つことができません'ステートメント。それに対処する方法のマーティンの答えを参照してください。 –

答えて

32

あなたはCASE式に従って単一の変数の値を設定するために

SET @StartDateQ1 = CASE @q1 
        WHEN 1 THEN '20130401' 
        END 

を使用することができます。

実際のロジックが複雑な場合(条件内に複数の変数を設定する必要があるなど)、代わりにIF ... ELSEをご覧ください。

CASEは、対照構築物の流れではない表現である。

+0

あなたはスマートで、これはうまくいきました。良い一日を。 – Chris

0

ここでIF文を使用してこの問題を解決する別の方法です:T-SQLで

IF @q1 = 1 
BEGIN 
    SET @StartDateQ1 = '20130401' 
END