新手求教一个Sql存储过程的简化写法

刚学存储过程,写了如下一个存储过程,大概意思就是判断两个传递参数,根据参数是否有传入值判断应该执行哪条SQL,各SQL之间的区别就是Where后面不同,其它的都一模一样。

我觉得我这样写有些太罗嗦了,请高手帮忙指点一下比较简约的写法,非常感谢。

CREATE PROC XQTJ_PRO
@xqfl int,
  @lbfl varchar(10)
AS

IF @xqfl = ''
  IF @lbfl = ''
  BEGIN
  SELECT * from table1
  END
  ELSE
  BEGIN
  SELECT * from table1 where b=@lbfl
  END
ELSE
  IF @lbfl = ''
  BEGIN
  SELECT * from table1 where a=@xqfl
  END
  ELSE
  BEGIN
  SELECT * from table1 where a=@xqfl and b==@lbfl
  END

作者: admmb   发布时间: 2011-06-14

SQL code
SELECT * from table1 where 
a= case when @xqfl='' then a else @xqfl end 
and b=case when @lbfl='' then a else @lbfl end  

作者: maco_wang   发布时间: 2011-06-14

这条例挺好啊

作者: rucypli   发布时间: 2011-06-14