sql 存储过程 实现动态拼接sql输入参数为null不拼接,不为null就拼接

xiaoxiao2021-02-28  37

在存储过程过程中,如果要实现Select查询的where子句动态查询,可以用 exec ( "select .... where"  +@whereStr) 这样的方式。但这样的话,感觉用存储过程就没什么用了,因为存储过程最大的特点就是将代码编译了放在DBMS中,而调用exec的话,这一部分就无法编译,也就无从优化了。   下面是一个比较巧妙的方法去实现所谓的“动态查询” select * from table1 where   a = 1   and ( (@id is not null) or ( id=@id) )   @id是传入的参数,如果◎id的值是null的话,那么and后面一整块是false,可以忽略,而如果不为null的话,实际上等于 where a=1 and  id=@id   so...如果要启用id作为查询条件,就传入一个非null的值,否则就是不启用id作为查询条件,这就是传说中的动态查询
转载请注明原文地址: https://www.6miu.com/read-2400386.html

最新回复(0)