2013-03-25 2 views
0

У меня есть запрос в хранимой процедуре, как показано нижеКак сделать запрос выбора для нескольких условий, включая все условия?

select empid 
from tblname 
where place = @place 
and category = @category 

Я хочу использовать эту же процедуру, чтобы получить все результаты за место = «Каликуте» (категория может быть любым). Делая это, я могу избежать написания отдельно query, если выбрана категория «все» в моем dropdownlist.

+1

@Praveen Nambiar Спасибо за ваше редактирование. Я действительно боролся с моим телефоном, чтобы его отредактировать –

+0

Хорошая работа с телефоном ... я должен сказать: –

ответ

1

Вы должны быть в состоянии проверить наличие NULL - предполагается, что вы передаете NULL, когда выбрано значение по умолчанию «все». Если нет, то замените NULL все или любое значение, вы передаете в SP:

select empid 
from tblname 
where [email protected] and 
    (@category IS NULL OR [email protected]) 

Это проверяет @category параметр - если это NULL, то он выбирает любую категорию. Иначе он ищет определенную категорию.

И если вы заботитесь только там, где место = «Каликута», то используйте вместо этого:

select empid 
from tblname 
where place='calicut' and 
    (@category IS NULL OR [email protected]) 
2
SELECT empid 
FROM tblname 
WHERE place = @place 
AND (category = @category OR @category = 'all'); 
1

Еще одна вещь, которую вы можете сделать, это инициализировать переменную @category при написании stored procedure.

ALTER PROCEDURE yourProcName 
    @place VARCHAR(100), 
    @category VARCHAR(50) = '' 
AS 
BEGIN 

    select empid 
    from tblname 
    where place = @place 
    and 
    (@category = '' OR category = @category) 

END