MSSQL通用分頁儲存過程

2021-08-30 00:17:44 字數 2033 閱讀 7006

--分頁的儲存過程

create procedure getrecordfrompage

@tblname varchar(255), -- 表名

@fldname varchar(255), -- 欄位名

@pagesize int = 10, -- 頁尺寸

@pageindex int = 1, -- 頁碼

@iscount bit = 0, -- 返回記錄總數, 非 0 值則返回

@ordertype bit = 0, -- 設定排序型別, 非 0 值則降序

@strwhere varchar(4000) = '' -- 查詢條件 (注意: 不要加 where)

as

declare @strsql varchar(6000) -- 主語句

declare @strtmp varchar(6000) -- 臨時變數

declare @strorder varchar(6000) -- 排序型別

if @ordertype != 0

begin

set @strtmp = '<(select min'

set @strorder = 'order by [' + @fldname +'] desc'

end

else

begin

set @strtmp = '>(select max'

set @strorder = ' order by [' + @fldname +'] asc'

end

set @strsql = 'select top ' + str(@pagesize) + ' * from ['

+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['

+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['

+ @fldname + '] from [' + @tblname + ']' + @strorder + ') as tbltmp)'

+ @strorder

if @strwhere != ''

set @strsql = 'select top ' + str(@pagesize) + ' * from ['

+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['

+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['

+ @fldname + '] from [' + @tblname + '] where (' + @strwhere + ') '

+ @strorder + ') as tbltmp) and (' + @strwhere + ') ' + @strorder

if @pageindex = 1

begin

set @strtmp = ''

if @strwhere != ''

set @strtmp = ' where (' + @strwhere + ')'

set @strsql = 'select top ' + str(@pagesize) + ' * from ['

+ @tblname + ']' + @strtmp + ' ' + @strorder

end

if @iscount != 0

set @strsql = 'select count(*) as total from [' + @tblname + ']'

exec (@strsql)

go

mssql 通用儲存過程

create proc commonpagination columns varchar 500 要顯示的列名,用逗號隔開 tablename varchar 100 要查詢的表名 ordercolumnname varchar 100 排序的列名 order varchar 50 排序的方式,公升...

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

名稱 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 順序...