2015-08-22 2 views
1

Я написал хранимую процедуру для извлечения данных из таблицы для моего приложения. Теперь мне нужно запросить одни и те же столбцы, используя другое условие. Я использовал IF ELSE для решения вопроса моей текущая хранимая процедура, как этоКак выполнить различные условия, в которых условия лучше,

ALTER PROCEDURE [dbo].[sample] 
     @flag INT=1 
AS 
BEGIN 
    SET NOCOUNT ON; 

    IF(@flag = 1) 
    BEGIN 
     SELECT 
      item1, item2, item3 
     FROM 
      table1 
     WHERE 
      (my first condition) 
    END 
    ELSE 
    BEGIN 
     SELECT 
      item1, item2, item3 
     FROM 
      table1 
     WHERE 
      (my second condition) 
    END 
END 

Текущей хранимой процедура работает нормально, но его грязное, если мне придется нужен еще один столбец, или мне нужно удалить столбец, я должен сделать это дважды.

Есть ли способ оптимизировать эту хранимую процедуру? Я новичок в SQL, и это моя первая хранимая процедура. Пожалуйста, помогите

ответ

2

Вы можете что-то вроде этого:

SELECT item1,item2,item3 
FROM table1 
WHERE 
    (@flag = 1 and 'my first condition') OR 
    (@flag != 1 and 'my secondcondition') 
0

Вы можете использовать СЛУЧАЙ для этого

SELECT item1, item2, item3 
FROM table1 
WHERE 
    CASE 
     WHEN @flag = 1 AND 'my first condition' THEN 1 
     WHEN @flag != 1 AND 'my second condition' THEN 1 
    END = 1 
Смежные вопросы