SQLServer存储过程实现单条件分页
需积分: 0 31 浏览量
更新于2020-12-16
收藏 36KB PDF 举报
话不多说,请看代码:
SQLServer Procedure Pagination_basic:
ALTER PROCEDURE [qiancheng].[Pagination_basic] (
@Table_name VARCHAR (255),
--name of table
@Rows_target VARCHAR (1000) = '*',
--search rows
@Rows_condition VARCHAR (1000) = '',
--the condition to find target (no where)
@Rows_order VARCHAR (255) = ''
在SQL Server中,存储过程是一种预编译的SQL语句集合,可以接受参数,执行复杂的数据库操作,并返回结果。在本例中,我们讨论的是一个名为`Pagination_basic`的存储过程,它主要用于实现单条件的分页查询。下面将详细解释这个存储过程的工作原理和涉及的关键知识点。
存储过程`Pagination_basic`接收以下参数:
1. `@Table_name`: 要查询的表的名称,类型为VARCHAR (255)。
2. `@Rows_target`: 要检索的列名,默认值为'*',表示选择所有列。
3. `@Rows_condition`: 查询条件,如果没有条件则为空字符串。
4. `@Rows_order`: 排序依据的列名。
5. `@Order_type`: 排序方式,0代表升序,1代表降序。
6. `@PageSizes`: 每页的记录数。
7. `@PageIndex`: 当前页码。
8. `@ShowPages`: 是否显示页码,1为显示,0为不显示。
9. `@ShowRecords`: 是否显示总记录数,1为显示,0为不显示。
10. `@Records_total`: 输出参数,返回总记录数。
11. `@Pages_total`: 输出参数,返回总页数。
接下来,存储过程首先初始化`@Records_total`和`@Pages_total`为0。然后根据`@ShowRecords`和`@ShowPages`的值来决定是否计算总记录数和总页数。如果需要计算总记录数,会根据`@Rows_condition`是否存在来构造不同的SQL语句(有无WHERE子句),并使用`sp_executesql`执行动态SQL,将结果赋值给`@Records_total`。
接着,根据`@ShowPages`的值计算总页数。如果总记录数小于或等于每页记录数,则总页数为1;否则,通过除法得到总页数,若余数不为0,还需加1。
对于排序部分,根据`@Order_type`的值,构建相应的SQL子句。`@Order_type`为1时,使用`<`或`(select min`来获取最小值并降序排列;反之,使用`>`或`(select max`来获取最大值并升序排列。
根据当前页码`@PageIndex`和查询条件,构建用于分页查询的SQL语句。当`@PageIndex`为1时,直接添加`TOP @PageSizes`和排序条件;否则,需要计算偏移量(`(PageIndex - 1) * PageSizes`),并使用`OFFSET ... FETCH NEXT ... ROWS ONLY`来实现分页。
整个过程展示了如何利用SQL Server的存储过程和动态SQL来实现灵活的分页查询,同时考虑了多种条件,如排序方式、显示页码和记录数等。这种做法在处理大量数据时非常有用,因为它减少了多次查询数据库的次数,提高了效率。然而,需要注意的是,动态SQL可能会带来SQL注入的风险,因此在实际应用中应确保输入参数的安全性。
weixin_38672794
- 粉丝: 5
- 资源: 924
最新资源
- 基于Python+yolo水表识别 框架html + css + jquery + python +idea + django + MySQL + yolo
- 圣诞节倒计时工具制作-代码.zip
- multisim声控流水灯仿真电路设计 功能: 制作一个声控的LED流水灯电路,20只灯珠依次点亮,当 音量高时流水灯切快,当音调低时流水灯切慢 1.制作拾音整形电路; 2.制作LED驱动电路; 3
- Petrel三维地质建模与裂缝建模 内容包括1数据导入,2构造建模,3岩相建模,4属性建模,裂缝建模,总共十七节精讲 可以边看边操作的项目数据 对应的是2020年的新版精讲视频 包括视频
- 机械设计大件物品分拣生产线设计sw17可编辑非常好的设计图纸100%好用.zip
- 基于Servlet+Jsp+Mysql实现的学生管理系统(两个版本idea eclipse)
- 毕业设计-流程或者教程.zip
- 基于S7-200 PLC和MCGS的电机转速闭环速度控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- 如何快速使用阿里云OSS-PHP-SDK完成常见文件操作,如创建存储空间(Bucket)、上传文件(Object)、下载文件等
- Net-SNMP V5.7.0 Windows安装包
- java飞机大战小游戏代码+答辩ppt
- 企业人事管理系统,使用C#和Sql Server开发,包含详细的使用说明文档
- WinHex单文件版x32x64
- 机械设计常用电伴热带温度控制器sw19可编辑非常好的设计图纸100%好用.zip
- 群晖 DSM DS 218 PLAY VERSION文件
- 永磁同步电机控制资料,内容详细,包括参考lunwen,公式推导,模型搭建过程,电机控制书籍等等,CSDN沉沙