0

我在存储过程中有一个查询,如下所示

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

我想使用相同的过程来获取 place = 'calicut' 的所有结果(类别可以是任何)。通过这样做,我可以避免query在我的dropdownlist.

4

3 回答 3

2
SELECT empid 
FROM tblname 
WHERE place = @place 
AND (category = @category OR @category = 'all');
于 2013-03-25T15:07:42.937 回答
1

您应该能够检查 NULL - 这假设您在选择默认的“all”值时传递 NULL。如果不是,请将 NULL 替换为您传递给 SP 的所有值或任何值:

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

这会检查@category 参数——如果它为NULL,那么它会选择任何类别。否则它会搜索该特定类别。

如果您只关心 where place = 'calicut',请改用它:

select empid 
from tblname 
where place='calicut' and 
    (@category IS NULL OR category=@category)
于 2013-03-25T15:07:42.670 回答
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
于 2013-03-25T15:15:09.310 回答