2011-09-02 48 views
0

我在使用select語句在CASE語句中設置返回值時遇到問題......有人可以請看看嗎?SQL案例 - 使用SELECT

DECLARE @SystemTypeId int 
SELECT @SystemTypeId = [SystemTypeId] FROM [Properties] WHERE [Id] = @PropertyId 

SET @RETURN_VAL = 
    CASE @SystemTypeId 
     WHEN 2 THEN (SELECT [Created] FROM [Assets] WHERE [Id] = @AssetId) 
     WHEN 3 THEN (SELECT dbo.GetAssetValueById([CreatedBy]) 
        FROM [Assets] 
        WHERE [Id] = @AssetId) 
     WHEN 9 THEN (SELECT [LastModified] 
        FROM [Assets] 
        WHERE [Id] = @AssetId) 
     ELSE NULL 
    END 
+1

第一步將宣佈**'@ AssetID' ** – JNK

+0

@AssetId已經進一步聲明瞭上面。 –

+0

似乎不管@SystemTypeId是什麼,情況2總是被選中。 –

回答

7

試試這個:

SELECT @RETURN_VAL = 
     CASE @SystemTypeId 
      WHEN 2 THEN [Created] 
      WHEN 3 THEN dbo.GetAssetValueById([CreatedBy]) 
      WHEN 9 THEN [LastModified] 
      ELSE NULL 
     END 
FROM [Assets] 
WHERE [Id] = @AssetId 
+0

:) 6秒的差異。 +1 – a1ex07

+2

@ a1ex07,你應該只有一半回答然後編輯。不知道你怎麼樣? –

+0

看起來好像不管@SystemTypeId是什麼,情況2(第一種情況)總是被選中。 –