sqlserver创建带参数的存储过程(SQLServer存储过程实现单条件分页)
类别:数据库 浏览量:1770
时间:2022-01-20 00:19:22 sqlserver创建带参数的存储过程
SQLServer存储过程实现单条件分页话不多说,请看代码:
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) = '', --the rows to rank @Order_type INT = 0, -- *Q*C* 0 normal 1 down @PageSizes INT = 10, --the size of each page @PageIndex INT = 1, --current page @ShowPages INT, --whether show the pages *Q*C* 1-yes 0-no @ShowRecords INT, --whether show the record *Q*C* 1-yes 0-no @Records_total INT OUTPUT, --returned total records @Pages_total INT OUTPUT --returned total pages ) AS DECLARE @MainSQL_QC nvarchar (2000) --Main SQL sentence DECLARE @Var_QC VARCHAR (100) --Temporary variate DECLARE @Order_QC VARCHAR (400) --the sort to rank SET @Records_total = 0 SET @Pages_total = 0 IF @ShowRecords = 1 OR @ShowPages = 1 BEGIN IF @Rows_condition != '' SET @MainSQL_QC = 'select @Records_total = count(1) from [' + @Table_name + '] where ' +@Rows_condition ELSE SET @MainSQL_QC = 'select @Records_total = count(1) from [' + @Table_name + ']' EXEC sp_executesql @MainSQL_QC, N'@Records_total int out' ,@Records_total OUTPUT END IF @ShowPages = 1 BEGIN IF @Records_total <= @PageSizes SET @Pages_total = 1 ELSE BEGIN SET @Pages_total = @Records_total /@PageSizes IF (@Records_total %@PageSizes) > 0 SET @Pages_total = @Pages_total + 1 END END IF @Order_type = 1 BEGIN SET @Var_QC = '<(select min' SET @Order_QC = ' order by [' + @Rows_order + '] desc' END ELSE BEGIN SET @Var_QC = '>(select max' SET @Order_QC = ' order by [' + @Rows_order + '] asc' END IF @PageIndex = 1 BEGIN IF @Rows_condition != '' SET @MainSQL_QC = 'select top ' + str(@PageSizes) + ' ' +@Rows_target + ' from [' + @Table_name + '] where ' + @Rows_condition + ' ' + @Order_QC ELSE SET @MainSQL_QC = 'select top ' + str(@PageSizes) + ' ' +@Rows_target + ' from [' + @Table_name + '] ' + @Order_QC END ELSE BEGIN IF @Rows_condition != '' SET @MainSQL_QC = 'select top ' + str(@PageSizes) + ' ' +@Rows_target + ' from [' + @Table_name + '] where [' + @Rows_order + ']' + @Var_QC + '([' + @Rows_order + ']) from (select top ' + str((@PageIndex - 1) *@PageSizes) + ' [' + @Rows_order + '] from [' + @Table_name + '] where ' + @Rows_condition + ' ' + @Order_QC + ') as Tmep_QC) and ' + @Rows_condition + ' ' + @Order_QC ELSE SET @MainSQL_QC = 'select top ' + str(@PageSizes) + ' ' +@Rows_target + ' from [' + @Table_name + '] where [' + @Rows_order + ']' + @Var_QC + '([' + @Rows_order + ']) from (select top ' + str((@PageIndex - 1) *@PageSizes) + ' [' + @Rows_order + '] from [' + @Table_name + ']' + @Order_QC + ') as Tmep_QC)' + @Order_QC END EXEC (@MainSQL_QC)
调用:execute pagination_basic 'UserDetail','*','','id','1','5','1','1','1','',''
主要是末尾的语句,拆分下来便是这样:
select top 每页数 列名 from [表名] where [排序字段名] < --1 倒序输出若列 小于之前页数的最小值
(select min ( [排序字段名] )from --2 获得一个指定列名中的最小值并输出
(select top (当前页-1)*每页数 [排序字段名] from [表名] where [条件] [排序类型]) --3 选择之前页数总数据倒序输出
as Tmep_QC)--4 建立一个名为Tmep_QC的临时表--2 获得一个指定列名中的最小值并输出
and [条件] [排序类型]--1 倒序输出若列 小于之前页数的最小值
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持开心学习网!
您可能感兴趣
- sqlserver查看某个库所有表(SQL Server怎么找出一个表包含的页信息Page)
- sql server建表语句带字段说明(SqlServer给表增加多个字段的语法)
- centos系统mysql安装及连接教程(CentOS8安装SQLServer2019的过程)
- sqlserver数据库备份怎么还原(SQL Server2012数据库备份和还原的教程)
- sql中去除重复记录的关键字(sqlserver查询去掉重复数据的实现)
- sqlserver数据库如何分页(SQL server分页的4种方法示例很全面)
- 何谓SQLSERVER参数嗅探问题(何谓SQLSERVER参数嗅探问题)
- SqlServer 复制中将大事务分成小事务分发的方法(SqlServer 复制中将大事务分成小事务分发的方法)
- sqlserver2008远程连接设置(如何开启SqlServer 远程访问)
- sql怎么取随机数(SQLServer 使用rand获取随机数的操作)
- sql启动错误代码1814(SQLMSSQLSERVER服务启动错误代码3414的解决方法)
- SqlServer索引的原理与应用详解(SqlServer索引的原理与应用详解)
- sqlservercount函数的用法(SQL Server中row_number函数的常见用法示例详解)
- sqlserver 空间数据类型(SQL Server数据类型转换方法)
- sqlserver追加主键(sqlserver主键自增的实现示例)
- sqlserver查询信息表(SQL Server中Table字典数据的查询SQL示例代码)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
- 这部动漫中的女孩子,可比101女孩更加励志(这部动漫中的女孩子)
- 《白狐的人生》热拍 贾征宇偶像包袱难自弃 图(白狐的人生热拍)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
热门推荐
- vue elementui 按钮样式修改(vue+elementui 实现新增和修改共用一个弹框的完整代码)
- 织梦后台参数怎么设置才符合seo(详解织梦模板自定义表单限制IP24小时只能提交一次教程)
- html5长图拖动(html5 拖拽及用 js 实现拖拽功能的示例代码)
- js中alert相关知识点(js中getBoundingClientRect 方法案例详解)
- 60个常用的css布局(CSS布局基础BFC)
- python 微信二维码接口(python实现微信防撤回神器)
- dede搜索模块下载(dede会员列表调用适用于企业、个人)
- php获取数组中和为指定数的数组(php统计数组不同元素的个数的实例方法)
- C# xml和对象的序列化与反序列化
- dedecms 内容页模板(dedecms列表页与详情页调用tag标签的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9