其实很多非业务逻辑的功能,比如分页,数据过滤,可以在程序上面节省很多内存和CPU时间,但往往又找不到一个比较通用有效的方法,花了点时间,终于把我想要的在数据库中分页和过滤的功能写了出来,在这里分享。
第一期望:我希望输入页码(pageIndex),每页显示的记录数(pageSize),然后这个存储过程就可以给我一个当前页的数据集。
首先,我假设有个表叫Configuration,里面就3个字段,Id, Key, Value,就是一个简单的数据表,定义如下:
这里用的ROW_NUMBER()来实现分页,性能必拼SQL的方法好,WITH...AS可以省下一个表变量。最后计算总记录数和页数很简单,算下就好了。
第二期望:这样的,似乎差不多了,但是我还希望能够有一套规则,来过滤结果集,并且还要有类似AND和OR的运算功能,而且我仍旧不希望用inline-script去实现,能不用尽量不要用。
最后,新建一个存储过程,叫"sp_r_fp_configuration",这里比上一个多了一个"f",表示带有过滤功能。
输出,如果需要找null值的话,直接把match属性去掉就可以了<rule column="value" required="1"/>:
联系客服