create procedure sp_page
@strtable varchar(50), --表名
@strcolumn varchar(50), --按該列來進行分頁
@intcoltype int, --@strcolumn列的型別,0-數字型別,1-字元型別,2-日期時間型別
@intorder bit, --排序,0-順序,1-倒序
@strcolumnlist varchar(800), --要查詢出的字段列表,*表示全部字段
@intpagesize int, --每頁記錄數
@intpagenum int, --指定頁
@strwhere varchar(800), --查詢條件
@intpagecount int output --總頁數
asdeclare @sql nvarchar(4000) --用於構造sql語句
declare @where1 varchar(800) --構造條件語句
declare @where2 varchar(800) --構造條件語句
if @strwhere is null or rtrim(@strwhere)=''
-- 為了避免sql關鍵字與字段、表名等連在一起,首先為傳入的變數新增空格
begin --沒有查詢條件
set @where1=' where '
set @where2=' '
end
else
begin --有查詢條件
set @where1=' where ('+@strwhere+') and '
set @where2=' where ('+@strwhere+') '
endset @strcolumn = ' ' + @strcolumn + ' '
set @strcolumnlist = ' ' + @strcolumnlist + ' '
--構造sql語句,計算總頁數。計算公式為 總頁數 = ceiling ( 記錄個數 / 頁大小 )
set @sql='select @intpagecount=ceiling((count(*)+0.0)/'
+ cast(@intpagesize as varchar)
+ ') from ' + @strtable + @where2
--執行sql語句,計算總頁數,並將其放入@intpagecount變數中
exec sp_executesql @sql,n'@intpagecount int output',@intpagecount output
--將總頁數放到查詢返回記錄集的第乙個欄位前,此語句可省略
set @strcolumnlist=' ' + cast(@intpagecount as varchar(30)) + ' as pagecount,' + @strcolumnlist
if @intorder=0 --構造公升序的sql
set @sql='select top '+ cast(@intpagesize as varchar) +
@strcolumnlist +
' from ' + @strtable + @where1 +
@strcolumn + '>(select max('+@strcolumn+') '+
' from (select top '+ cast(@intpagesize*(@intpagenum - 1) as varchar) +
@strcolumn + ' from '+ @strtable+@where2+'order by '+@strcolumn+') t) order by '+ @strcolumn
else --構造降序的sql
set @sql='select top '+ cast(@intpagesize as varchar) +
@strcolumnlist+
' from '+ @strtable + @where1 +
@strcolumn + '<(select min('+@strcolumn+') '+
' from (select top '+ cast(@intpagesize*(@intpagenum - 1) as varchar) +
@strcolumn + ' from '+ @strtable+@where2+'order by '+@strcolumn+' desc) t) order by '+
@strcolumn + ' desc'
if @intpagenum=1--第一頁
set @sql='select top '+cast(@intpagesize as varchar) + @strcolumnlist + ' from '+@strtable+
@where2+'order by '+@strcolumn+case @intorder when 0 then '' else ' desc'
end
--print @sql
exec(@sql)
go
通用儲存過程 分頁儲存過程
名稱 spall returnrows 輸入 輸出 呼叫 exec spall returnrows select from 表名 頁號,返回記錄數,主鍵 排序字段 spall returnrows select from all categories 2,10,id id 說明 百萬級 通用儲存過...
通用分頁儲存過程
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...
通用分頁儲存過程
通用分頁儲存過程 create proc commonpagination columns varchar 500 要顯示的列名,用逗號隔開 tablename varchar 100 要查詢的表名 ordercolumnname varchar 100 排序的列名 order varchar 50...