SQL if else存储过程

时间:2014-02-12 01:10:17

标签: sql sql-server if-statement

我正在编写一个存储过程,它正在为if而不是for else工作。因为如果我得到正确的ID值,但是对于其他它只是给我null。

SELECT  @ID = ID FROM PRODUCTS WHERE SN = @SN
SELECT @Chip_ID = Chip_ID FROM PRODUCTS WHERE SN = @SN
SELECT @Power = Power From Module_Cycle WHERE ChipID = @Chip_ID

SELECT @Test_ID=Test_ID FROM TestEE_Mod WHERE ID=@ID AND @TypeID = TypeID
IF(@Test_ID IS NOT NULL)
BEGIN

    IF(@TypeID = '3')
    BEGIN
        SELECT  @Temp_TestID=TestID FROM TempCycle WHERE ChipID = @Chip_ID AND @Power = 'false'
        BEGIN
            UPDATE TestEE_Mod SET Temp_TestID = @Temp_TestID WHERE ID = @ID AND TypeID = @TypeID
        END
    END

    ELSE
    BEGIN
        SELECT  @Temp_TestID=TestID FROM TempCycle WHERE ChipID = @Chip_ID AND @Power = 'true'
        BEGIN
            UPDATE TestEE_Mod SET Temp_TestID = @Temp_TestID WHERE ID = @ID AND TypeID = @TypeID
        END
    END
END

1 个答案:

答案 0 :(得分:1)

问题很可能出在@Power变量中。在您的两个SELECT语句中,唯一的区别是@Power = 'false'条款中包含WHERE,而另一个包含@Power = 'true'

由于@Power是一个变量,而不是TempCycle表格中的实际列,我猜你实际上是想在两者中按Power = @Power进行过滤。