分頁儲存過程

2022-02-06 19:42:44 字數 3098 閱讀 1323

/*

函式名稱: getrecordfrompage

函式功能: 獲取指定頁的資料

引數說明:

@tblname     

包含資料的表名

@pkname     

關鍵欄位名

@strgotfields 要獲取的字段

@pagesize    

每頁記錄數

@pageindex     要獲取的頁碼

@ordertype     排序型別,

0 - 公升序, 1 - 降序

@strwhere      查詢條件 (注意: 不要加

where)

@iscount 是否取得記錄條數 , 0 - 不取 , 1 - 獲取

@strsort 排序字段

*/create procedure getrecordfrompage

@tblname     

varchar(255),        -- 表名

@pkname      varchar(255),        --

欄位名@strgotfields varchar(1000) = '*' ,  --查詢欄位名

@pagesize     int

= 10,             -- 頁尺寸

@pageindex    int = 1,              -- 頁碼

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

@strwhere    

varchar(2000) = '' ,  -- 查詢條件 (注意: 不要加 where)

@iscount bit =

1,   --取得記錄條數

@strsort varchar(255) = ''  --排序字段

asdeclare

@strsql   varchar(6000)       -- 主語句

declare @strtmp   varchar(1000)       

-- 臨時變數

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

declare @strcount

varchar(1000)

declare @fldname varchar(255)

declare @sortname

varchar(255)

declare @countsql varchar(1000)

set @fldname = @pkname

if @strsort != ''

begin

set @sortname =

@strsort

endelse

begin

set @sortname = @pkname

endif @iscount = 1

begin

if @strwhere != ''

begin

set@countsql = 'select count(' + @fldname + ') from ' + @tblname  + ' where ' +

@strwhere

endelse

begin

set @countsql = 'select count(' +

@fldname + ') from ' + @tblname

endexec (@countsql)

return

endelse

begin

if @ordertype != 0

begin

set @strtmp = '<(select min'

set@strorder = ' order by ' + @sortname + ' desc'

endelse

begin

set @strtmp = '>(select max'

set @strorder = ' order by ' + @sortname

+' asc'

endset @strsql = 'select top ' + str(@pagesize) + @strgotfields + '  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) +

@strgotfields + '  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) + @strgotfields + '  from

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

endexec (@strsql)

endgo

分頁儲存過程 分頁儲存過程

分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...

分頁儲存過程

create proc p sobigo percentpage tblname varchar 255 t category 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pag...

分頁儲存過程

create procedure pro select pageindex int,pagesize int as select student.sno,student.sname,student.s grade.math,grade.physics,grade.huaxue,grade.chine...