新聞中心
對(duì)SQL Server中任意select語句,如何才能分頁呢?下面將為您建立一個(gè)通用的存儲(chǔ)過程,對(duì)SQL Server中任意select語句進(jìn)行分頁,供您參考。

成都創(chuàng)新互聯(lián)公司主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、全網(wǎng)整合營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、微商城、網(wǎng)站托管及網(wǎng)頁維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊(cè)、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都護(hù)欄打樁機(jī)行業(yè)客戶提供了網(wǎng)站推廣服務(wù)。
CREATE PROCEDURE [dbo].[usp_ResultWithPage]
@fields_Type varchar(1000), --字段列表(帶類型),用于@t表變量的字段聲明,如:PhotoID int,UserID int,PhotoTitle nvarchar(50)
@fieldsInT varchar(500), --字段列表(不帶類型),用于分頁部分讀取@t表變量的字段,也可使用*代替,但性能會(huì)下降,如:PhotoID ,UserID ,PhotoTitle
@selectSrting varchar(2000), --向@t表變量中讀取記錄的Select語句,如:SELECT PhotoID ,UserID ,PhotoTitle FROM Photo_Basic
@result_OrderBy varchar(200), --對(duì)分頁結(jié)果進(jìn)行排序的字段,如:升序'PhotoID ASC'、降序'PhotoID DESC'
@pageSize int, --頁尺寸,0表示返回所有行
@currentPage int, --當(dāng)前頁,首頁為1
@IsReCount bit -- 非0值則返回記錄總數(shù)
AS
BEGIN
---------------得到表變量@t-------------------------
DECLARE @strSql varchar(2000)
SET @strSql = 'DECLARE @t TABLE(' + @fields_Type + ');'
SET @strSql = @strSql + 'INSERT INTO @t ' + @selectSrting + ';'
--顯示表變量的內(nèi)容
--SET @strSql = @strSql + 'SELECT ' + @fieldsInT + ' FROM @t;'
----------進(jìn)行分頁------------------------------------
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
總結(jié)一下,主要思想還是用了sql server 的 top row_number函數(shù)。
【編輯推薦】
使用SQL中SELECT語句的使用條件邏輯
SQL語句中SELECT語句的執(zhí)行順序
SQL語句中的嵌套SELECT語句
教您如何使用sql語句刪除所有存儲(chǔ)過程
SQL非正常刪除日志文件的恢復(fù)方法講解
文章題目:對(duì)SQL Server中任意select語句分頁的存儲(chǔ)過程
本文地址:http://www.dlmjj.cn/article/dpphdei.html


咨詢
建站咨詢
