2013-11-26 7 views
14

Ist es möglich, eine Variable in einer case-Anweisung zu setzen? Mein Code funktioniert nicht. Danke allen. nach einem CASE AusdruckSQL Server: eine Variable in CASE-Anweisung setzen

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

In T-SQL, 'CASE' eine ist ** ** Ausdruck, der einen Wert zurückgibt - Sie können nicht Codeblöcke in Ihrem' CASE haben 'Aussage. Siehe Martins Antwort, wie man damit umgeht. –

Antwort

32

können Sie

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

, um den Wert einer einzelnen Variablen zu setzen.

Wenn Ihre reale Logik komplizierter ist (z. B. müssen Sie mehrere Variablen innerhalb einer Bedingung setzen), sehen Sie sich stattdessen IF ... ELSE an.

CASE ist ein Ausdruck kein Fluss des Kontrollkonstrukts.

+0

Sie sind schlau und das hat funktioniert. Guten Tag Herr. – Chris

0

Hier ist eine andere Möglichkeit, dies mit eine IF-Anweisung zu lösen:

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