实现SQL分页的存储过程代码分享

数据库   2024年05月09日 20:38  

这篇文章主要介绍“实现SQL分页的存储过程代码分享”,在日常操作中,相信很多人在实现SQL分页的存储过程代码分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”实现SQL分页的存储过程代码分享”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

SQL分页的存储过程代码,需要的朋友们直接拿去用,使用非常简单。

分享代码如下

USE[SendMessage]GO/******Object:StoredProcedure[dbo].[pages]ScriptDate:07/09/201513:46:50******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROC[dbo].[pages](@tbnamenvarchar(100),--要分页显示的表名@FieldKeynvarchar(1000),--用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段@PageCurrentint=1,--要显示的页码@PageSizeint=10,--每页的大小(记录数)@FieldShownvarchar(1000)='',--以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段@FieldOrdernvarchar(1000)='',--以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC@WhereStringnvarchar(1000)=N''--查询条件)ASbeginIFISNULL(@FieldKey,N'')=''BEGINRAISERROR(N'分页处理需要主键(或者惟一键)',1,16)RETURNENDIFISNULL(@PageCurrent,0)<1SET@PageCurrent=1IFISNULL(@PageSize,0)<1SET@PageSize=10IFISNULL(@FieldShow,N'')=N''SET@FieldShow=N'*'IFISNULL(@FieldOrder,N'')=N''SET@FieldOrder=N''ELSESET@FieldOrder=N'ORDERBY'+LTRIM(@FieldOrder)IFISNULL(@WhereString,N'')=N''SET@WhereString=N''ELSESET@WhereString=N'WHERE'+@WhereString+N''--计算分页显示的TOPN值DECLARE@TopNvarchar(20),@StartRecordvarchar(20),@EndRecordvarchar(20)SELECT@TopN=@PageSize,@StartRecord=(@PageCurrent-1)*@PageSize+1,@EndRecord=(@PageCurrent-1)*@PageSize+@PageSize--第一页直接显示IF@PageCurrent=1EXEC(N'SELECTTOP'+@TopN+N''+@FieldShow+N'FROM'+@tbname+N''+@WhereString+N''+@FieldOrder)ELSEEXEC(N'withtemptblas(selectROW_NUMBER()Over('+@FieldOrder+')asrow,'+@FieldKey+'from'+@tbname+N''+@WhereString+')select'+@FieldShow+'from(selectB.*from(select'+@FieldKey+'fromtemptblwhererowbetween'+@StartRecord+'and'+@EndRecord+')Aleftjoin'+@tbname+'BonA.'+@FieldKey+'=B.'+@FieldKey+')C')END

到此,关于“实现SQL分页的存储过程代码分享”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部