存储过程中如何根据参数是否为空执行不同的select??

来源:互联网 发布:windows live id是什么 编辑:程序博客网 时间:2024/06/05 17:04
存储过程中如何根据参数是否为空执行不同的select??
假设表T1,其中有A1,A2,D1,D2等多个字段,A1,A2为varchar型,D1,D2为日期型。 
传来四个参数,@A1,@A2,@D1,@D2,如果为空,则不必理会;如果不为空,则加到条件子句中。

@A1,@D1不空为,那么。
要执行select * from t1 where
a1=@A1 and d1>=@D1
如果@A2,@D2不为空,则执行 select * from t1 where
A2=@A2 and d2 <=@D2
当然,这四个参数是不固定有没有的,可能这次查询没有,下次查询就有了。
也可能同时都为空,那么就执行select * from t1即可。
请问这样的存储过程应该怎么写?
谢谢。

--这样应该就没问题了。
select * from tb
where A1=isnull(@A1,A1)
and  A2=isnull(@A2,A2)
and D1=isnull(@D1,D1)
and D2=isnull(@D2,D2)
原创粉丝点击