通用分頁儲存過程

2021-04-01 01:07:40 字數 1559 閱讀 9724

--saik友情提供 saikoyz@hotmail.***

/*功能描述:對指定表中滿足條件的記錄按指定列進行分頁查詢

作    者:saiko

版    本:1.10

最後修改:2005-04-13           

呼叫例子:

sposplitpages'任何條件的sql語句',2,10     -- 第2頁,每頁10行

exec sposplitpages  '你的sql語句','排序字段',0 ,30, 1  -- 0: 最後一頁  30:每頁記錄數  1:降冪

*/create  procedure sposplitpages

@sqlquery nvarchar(4000),  --查詢字串

@orderfieldname  varchar(30),   --按該列為關鍵字來進行排序分頁

@currentpage int,  --第n頁 (如果是 0  則讀取 最後 一頁的記錄  )

@pagesize int,   --每頁行數

@ordertype    int          --排序, 0:順序,  1:  其它數字: 不進行排序 (只有此處的數字不為 0 為 1 的時候,外程式傳入的  orderfieldname  才可以為空!)

asdeclare @sql nvarchar(4000), @tpagecount int

if @ordertype=0

set @sql= @sqlquery + '  order by  '+@orderfieldname

if @ordertype=1

set @sql =@sqlquery + '  order by  '+@orderfieldname + '  desc '

else

set @sql =@sqlquery

begin

set nocount on

declare @p1 int,--p1是游標的id

@rowcount int

--print  @sql

exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output

set  @tpagecount = ceiling(1.0*@rowcount/@pagesize)

if @currentpage = 0

set  @currentpage = @tpagecount  -- @pageindex = 0 表示在呼叫時,是首次查詢,先讀取 最後 一頁的記錄 

set @currentpage=(@currentpage-1)*@pagesize+1

exec sp_cursorfetch @p1,16,@currentpage,@pagesize

exec sp_cursorclose @p1

select  @tpagecount as pagescount ,@rowcount as rowscount,@currentpage as currentpage 

set nocount off

endgo

通用儲存過程 分頁儲存過程

名稱 spall returnrows 輸入 輸出 呼叫 exec spall returnrows select from 表名 頁號,返回記錄數,主鍵 排序字段 spall returnrows select from all categories 2,10,id id 說明 百萬級 通用儲存過...

通用分頁儲存過程

create procedure sp page strtable varchar 50 表名 strcolumn varchar 50 按該列來進行分頁 intcoltype int,strcolumn列的型別,0 數字型別,1 字元型別,2 日期時間型別 intorder bit,排序,0 順序...

通用分頁儲存過程

set quoted identifier on goset ansi nulls off go declare p1 int set p1 null exec sp pageview tbname n v question list fieldkey n id pagecurrent 3,page...