2011-09-02 68 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(第一种情况)总是被选中。 –