对SQL Server中任意select语句分页的存储过程

对SQL Server中任意select语句,如何才能分页呢?下面将为您建立一个通用的存储过程,对SQL Server中任意select语句进行分页,供您参考。

成都创新互联公司主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、全网整合营销推广、网站程序开发、HTML5响应式成都网站建设移动网站建设、微商城、网站托管及网页维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都护栏打桩机行业客户提供了网站推广服务。

CREATE   PROCEDURE   [dbo].[usp_ResultWithPage]

@fields_Type varchar(1000),     --字段列表(带类型),用于@t表变量的字段声明,如:PhotoID int,UserID int,PhotoTitle nvarchar(50)
@fieldsInT varchar(500),     --字段列表(不带类型),用于分页部分读取@t表变量的字段,也可使用*代替,但性能会下降,如:PhotoID ,UserID ,PhotoTitle
@selectSrting varchar(2000),     --向@t表变量中读取记录的Select语句,如:SELECT PhotoID ,UserID ,PhotoTitle FROM Photo_Basic

@result_OrderBy varchar(200),     --对分页结果进行排序的字段,如:升序'PhotoID ASC'、降序'PhotoID DESC'
@pageSize int,     --页尺寸,0表示返回所有行
@currentPage int,     --当前页,首页为1
@IsReCount bit     -- 非0值则返回记录总数

AS
BEGIN

---------------得到表变量@t-------------------------
DECLARE   @strSql   varchar(2000)

SET @strSql = 'DECLARE @t TABLE(' + @fields_Type + ');'
SET @strSql = @strSql + 'INSERT  INTO @t ' + @selectSrting + ';'

--显示表变量的内容
--SET @strSql = @strSql + 'SELECT ' + @fieldsInT + ' FROM @t;'

----------进行分页------------------------------------

IF   @pageSize   =   0
    SET   @strSql  = @strSql +  'SELECT '   +   @fieldsInT  + ' FROM @t ;'
ELSE
    IF   @currentPage   =   1
        SET   @strSql   = @strSql +     'SELECT TOP( ' + Str(@pageSize) + ') ' + @fieldsInT + ' FROM @t ;'
    ELSE
    BEGIN
SET   @strSql   = @strSql +  'SELECT TOP( ' + Str(@pageSize) + ') * FROM ( SELECT TOP(' + Str(@pageSize * @currentPage) + ') *, ROW_NUMBER() OVER (ORDER BY ' + @result_OrderBy + ')'
SET   @strSql   = @strSql +  ' AS   RowNumber   FROM  @t'
SET   @strSql   = @strSql +  ' ) AS r WHERE   r.RowNumber   >  ' + Str(@pageSize * (@currentPage - 1)) + ';'
    END

IF @IsReCount != 0
    SET @strSql = 'SELECT COUNT(1) AS Total FROM @t ;'

--RETURN @strSql

EXEC(@strSql)

-----------------------
END

总结一下,主要思想还是用了sql server 的 top row_number函数。

【编辑推荐】
使用SQL中SELECT语句的使用条件逻辑

SQL语句中SELECT语句的执行顺序

SQL语句中的嵌套SELECT语句

教您如何使用sql语句删除所有存储过程

SQL非正常删除日志文件的恢复方法讲解

当前标题:对SQL Server中任意select语句分页的存储过程
标题来源:http://www.stwzsj.com/qtweb/news8/13058.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联