这里只是一个简单的问题。
假设我有一个用于从表格中选择记录的存储过程。
select * from tbl_table
where deleted = @deleted
所以对于上面这个,我必须传入一个参数为TRUE或FALSE。
是否可以返回删除等于TRUE和FALSE的结果,但保留传入参数的选项。所以我想,如果没有传入参数,就没有过滤器。
我想的另一种方法就是这样做..
select * from tbl_table
where deleted = @deleted1
and deleted = @deleted2
所以你有两个参数用于同一个过滤器。这样你可以做真或假,或者设置两个过滤器相同 - 给予更多的余地。
如果有人对此有任何想法或想法会很棒!
答案 0 :(得分:2)
将参数设置为nullable(= NULL)然后
select * from tbl_table
where (@deleted IS NULL) OR (deleted = @deleted)
当您不希望应用该参数的过滤器时,请不要提供参数(或显式提供为NULL)。
(但请注意,这有时会产生参数嗅探后果,特别是对于大量参数)