日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
對SQL Server中任意select語句分頁的存儲過程

對SQL Server中任意select語句,如何才能分頁呢?下面將為您建立一個通用的存儲過程,對SQL Server中任意select語句進行分頁,供您參考。

成都創(chuàng)新互聯(lián)公司主要為客戶提供服務項目涵蓋了網(wǎng)頁視覺設(shè)計、VI標志設(shè)計、全網(wǎng)整合營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應式成都網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、微商城、網(wǎng)站托管及網(wǎng)頁維護、WEB系統(tǒng)開發(fā)、域名注冊、國內(nèi)外服務器租用、視頻、平面設(shè)計、SEO優(yōu)化排名。設(shè)計、前端、后端三個建站步驟的完善服務體系。一人跟蹤測試的建站服務標準。已經(jīng)為成都護欄打樁機行業(yè)客戶提供了網(wǎng)站推廣服務。

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),     --對分頁結(jié)果進行排序的字段,如:升序'PhotoID ASC'、降序'PhotoID DESC'
@pageSize int,     --頁尺寸,0表示返回所有行
@currentPage int,     --當前頁,首頁為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;'

----------進行分頁------------------------------------

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語句刪除所有存儲過程

SQL非正常刪除日志文件的恢復方法講解


當前名稱:對SQL Server中任意select語句分頁的存儲過程
當前網(wǎng)址:http://m.5511xx.com/article/dpphdei.html