--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...