sql 在存储过程中的动态查询--就是当有的查询条件为空时就不加入查询

下面是一个比较巧妙的方法去实现所谓的“动态查询”

ALTER PROCEDURE [dbo].[Test]
@flag int,
@inorout int
AS
BEGIN

SELECT * FROM Demo 
where 1 = 1
and ((@flag IS NULL) or (flag=@flag) or @flag = '')
and ((@id IS NULL) or (id=@id) or @id= '')
END

@flag是传入的参数
 
so...如果要启用id作为查询条件,就传入一个非null的值,否则就是不启用id作为查询条件,这就是传说中的动态查询
posted @ 2018-03-20 17:11  老天会爱笨小孩  阅读(1686)  评论(0编辑  收藏  举报