分頁儲存過程!

2021-04-21 09:14:28 字數 2516 閱讀 9731

create procedure listpage 

@tblname      varchar(50),        /* 表名 */ 

@fldname      varchar(50),        /* 欄位名 */ 

@fldsort      varchar(50),        /* 排序欄位名 */ 

@pagesize     int = 10,           /* 頁尺寸 */ 

@pageindex    int = 1,            /* 頁碼 */ 

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

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

@strwhere     varchar(1000) = ''  /* 查詢條件 (注意: 不要加 where) */ 

as begin 

declare @strsql   varchar(1000)   /* 主語句 */ 

declare @strtmp   varchar(300)    /* 臨時變數 */ 

declare @strorder varchar(400)    /* 排序型別 */ 

if @ordertype != 0 

begin 

set @strtmp = '<(select min' 

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

end 

else 

begin 

set @strtmp = '>(select max' 

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

end 

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

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

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

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

+ @strorder 

if @strwhere != '' 

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

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

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

+ @fldsort + '] 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) + ' ' + @fldname + ' from [' 

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

end 

if @iscount != 0 

begin 

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

if @strwhere != '' set @strsql = @strsql + ' where (' + @strwhere + ') '

end 

exec (@strsql) 

end 

public datatable proclistpage(string tablename, string fldname, string fldsort, int pagesize, int pageindex, string strwhere, bool iscount, bool ordertype)

catch 

}set ansi_nulls on

set quoted_identifier on

go

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

分頁儲存過程 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...