2分法分页存储过程脚本实战与封装示例

0 下载量 113 浏览量 更新于2024-08-30 收藏 54KB PDF 举报
本文档提供了一个2分法分页存储过程脚本实例,用于在数据库查询中实现分页功能。该存储过程名为`proc_ListPage`,接受多个参数以满足不同的查询需求。以下是关键知识点的详细解释: 1. **存储过程参数**: - `@tblName`: 表名或连接的多个表的标识符,用于指定查询的数据源。 - `@fldName`: 显示的字段列表,可以是通配符'*'表示所有字段。 - `@pageSize`: 每页显示的记录数量,默认为10。 - `@page`: 当前要显示的页码,起始页为1。 - `@fldSort`: 排序字段,可以为空,表示无排序;非空时可以指定多个字段的排序顺序(升序或降序)。 - `@Sort`: 排序标志,0表示升序,1表示降序。 - `@strCondition`: 查询条件,可以自定义SQL WHERE子句。 - `@ID`: 主表的主键,用于关联其他表。 - `@Distbit`: 是否应用DISTINCT关键字,0表示不使用,1表示只显示唯一值。 - `@pageCount` 和 `@Counts`:两个输出参数,分别用于返回分页后的总页数和记录总数。 2. **核心逻辑**: - 存储过程通过`@Sort`值来决定SQL中的排序方式,如果`@Sort`为0,则选择最小值;否则选择最大值,这是2分法分页的关键部分。 - 在第94行及之后的代码,配合自定义的类,提供了额外的功能,如显示记录条数、页数等信息。这部分可以根据实际需求进行调整或移除。 3. **动态SQL生成**: - 存储过程使用`@sqlTmp`, `@strTmp`, 和 `@strID` 作为变量,分别存储动态生成的SQL语句,用于获取查询结果、总数以及查询范围的ID。 4. **排序规则**: - 存储过程定义了两个变量`@strSortTypenvarchar(10)` 和 `@strFSortTypenvarchar(10)`,可能用于处理复杂排序情况,比如多字段排序时的不同排序类型。 5. **执行流程**: - 储存过程首先关闭`NOCOUNT`选项,确保结果集计数不受影响。 - 然后声明并初始化用于构建SQL查询的临时变量。 - 最后,根据输入参数执行相应的SQL查询,并返回所需的结果页和总计数。 这个脚本实例提供了一个灵活的框架,可以应用于数据库开发中,实现根据指定参数动态生成分页查询,并支持多种排序和筛选条件。通过将核心逻辑封装到外部类中,使得代码更加模块化,易于维护和扩展。开发者可以借此了解如何在SQL Server中创建高效的分页存储过程。