SQL Server2000分頁(yè)存儲(chǔ)過(guò)程
- Create ? PROCEDURE ?[dbo].[GetRecordWithPage]?
- @fieldsType?nvarchar(1000),??? --字段列表(帶類(lèi)型),用于@t表變量的字段聲明,如:PhotoID?int,UserID?int,PhotoTitle?nvarchar(50) ?
- @fieldsList?nvarchar(500),???? --字段列表(不帶類(lèi)型),用于分頁(yè)部分讀取@t表變量的字段,也可使用*代替,但性能會(huì)下降,如:PhotoID?,UserID?,PhotoTitle ?
- @selectSrting?nvarchar(2000),? --向@t表變量中讀取記錄的Select語(yǔ)句 ?
- @resultOrderBy?nvarchar(200),? --對(duì)分頁(yè)結(jié)果進(jìn)行排序的字段,如:升序'PhotoID?ASC'、降序'PhotoID?DESC',注意:如果是降序的話要在selectSrting和此處都加DESC ?
- @pageSize? INT ,???????????????? --頁(yè)尺寸,0表示返回所有行 ?
- @currentPage? INT ,????????????? --當(dāng)前頁(yè),首頁(yè)為1 ?
- @RecordCount? INT ? OUTPUT ??????? --非0值則返回記錄總數(shù) ?
- AS ?
- BEGIN ?
- ???? DECLARE ?@strSql? varchar (4000)?
- ???? declare ?@sql?nvarchar(1000)?
- ???? SET ?@strSql?=? 'DECLARE?@t?TABLE(' ?+@fieldsType+? ');' ?
- ???? SET ?@strSql?=?@strSql?+? 'INSERT?INTO?@t?' +@selectSrting+? ';' ?
- ???? set ?@sql?=?@strSql?+? 'select?@aa=count(*)?from?@t;' ??
- ???? exec ?sp_executesql?@sql,N '@aa?int?output' ,@RecordCount? OUTPUT ;?
- ????IF?@pageSize=0?
- ???????? SET ?@strSql=@strSql+ 'SELECT?' +@fieldsList+ '?FROM?@t;' ?
- ???? ELSE ?
- ????????IF?@currentPage=1?
- ???????????? SET ?@strSql=@strSql+ 'select?TOP(' +STR(@pageSize)+ ')' +@fieldsList+ '?FROM?@t;' ?
- ???????? ELSE ?
- ???????????? BEGIN ?
- ???????????????? SET ?@strSql?=@strSql+ 'SELECT?TOP(' +Str(@pageSize)+ ')' +?@fieldsList+ 'FROM?(SELECT?TOP(' +Str(@pageSize?*?@currentPage)+ ')' +@fieldsList+ '?,?ROW_NUMBER()?OVER?(ORDER?BY?' +@resultOrderBy+ ')' ?
- ???????????????? SET ?@strSql?=@strSql+ '?AS?RowNumber?FROM?@t' ?
- ???????????????? SET ?@strSql?=@strSql+ ')?AS?r?WHERE?r.RowNumber?>' ?+?Str(@pageSize?*?(@currentPage?-?1))+ ';' ?
- ???????????? END ?
- ???? EXEC (@strSql)?
- END
==================================================================
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
