2014-02-13 5 views
0

Я не могу понять, как установить значения, если Power, ChangeRate и Type - null. Я все еще хочу, чтобы он возвращал остальные значения, даже если они не находятся в базе данных.SQL Server Сохраненная процедура выбора

ALTER PROCEDURE dbo.up_getTestData 
(@Chip int) 
AS 
    DECLARE @Type char(2), @ChangeRate real, @Power bit 

    SELECT @Type = Type 
    FROM Spectrum 
    WHERE ChipID = @Chip 

    IF(@Type is null) 
     //SET @Type = 'NA' 
     //or Go to the bottom statement ?? 
     SELECT @ChangeRate = ChangeRate 
     FROM TempCycle 
     WHERE ChipID = @Chip 

    IF(@ChangeRate is null) 
     //Go to the bottom statement ?? 
     //SET @ChangeRate = '0.0' 
     SELECT @Power = Power 
     FROM TempCycle 
     WHERE ChipID = @Chip 

    IF(@Power is null) 
     // I want it to still go the bottom statement. I put just return 
     // but that's not right since it wouldn't return anything than?? 
     // or I did SET @Power = 'false' 
    ELSE 
     SELECT 
      Chips.Chip_ID AS ChipID, 
      Chip_Number, Test_Module.ModuleTypeID, 
      Test_Module.PID, Test_Module.Component1, Test_Module.Component2, 
      Test_Module.Parameter1, Test_Module.Parameter2, Test_Module.Parameter3, 
      Test_Module.Parameter4, Test_Module.Parameter5, 
      Test_Module.Parameter6, Spectrum.Type, TempCycle.Power, TempCycle.ChangeRate 
     FROM 
      Chips 
     INNER JOIN 
      Test_Module ON Chips.Chip_Number = Test_Module.Module_Name 
     INNER JOIN 
      Spectrum ON Test_Module.ModuleSpec_TestID = Spectrum.TestID 
     INNER JOIN 
      TempCycle ON Test_Module.ModuleTemp_TestID = TempCycle.TestID 
     WHERE 
      Chip_ID = @Chip 
RETURN 
+0

Я не понимаю, что вы пытаетесь сделать. Какую продукцию вы пытаетесь получить? Что вы хотите делать с переменными '@ Type',' @ ChangeRate' и '@ Power'? –

+0

Не могли бы вы опубликовать ожидаемое? что именно вы хотите сделать? –

+0

@RobertHarris Я показываю данные на странице aspx, поэтому, если значение равно null, я просто хочу показать его как пустым, иначе отобразятся значения из базы данных. – user2994144

ответ

1

Я думаю, что все, что вам нужно, это сливаются (или ISNULL):

SELECT 
    Chips.Chip_ID AS ChipID, 
    Chip_Number, 
    Test_Module.ModuleTypeID, 
    Test_Module.PID,  
    Test_Module.Component1, 
    Test_Module.Component2, 
    Test_Module.Parameter1, 
    Test_Module.Parameter2, 
    Test_Module.Parameter3, 
    Test_Module.Parameter4, 
    Test_Module.Parameter5, 
    Test_Module.Parameter6, 
    coalesce(Spectrum.Type, 'NA') as Type, 
    coalesce(TempCycle.Power, 'false') as Power, 
    coalesce(TempCycle.ChangeRate, '0.0') as ChangeRate 
FROM 
    Chips INNER JOIN Test_Module 
    ON Chips.Chip_Number = Test_Module.Module_Name 
    LEFT OUTER JOIN Spectrum 
    ON Test_Module.ModuleSpec_TestID = Spectrum.TestID 
    LEFT OUTER JOIN TempCycle 
    ON Test_Module.ModuleTemp_TestID = TempCycle.TestID 
WHERE 
    Chip_ID = @Chip 
+0

Теперь это сработало. высоко оценил TY :) – user2994144

Смежные вопросы