分頁的儲存過程

2021-05-10 16:01:18 字數 2380 閱讀 2295

alter procedure sql_conn_sort

(@tblname   varchar(255),       -- 表名

@strgetfields varchar(1000) = '*',  -- 需要返回的列

@fldname varchar(255)='',      -- 排序的欄位名

@pagesize   int ,          -- 頁尺寸

@pageindex  int ,           -- 頁碼

@docount  int = 0,   -- 返回記錄總數, 非 0 值則返回

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

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

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

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

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

if @docount != 0

begin

if @strwhere !=''

set @strsql = 'select count(*) as total from ' + @tblname + ' where '+@strwhere

else

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

end  

--以上**的意思是如果@docount傳遞過來的不是0,就執行總數統計。以下的所有**都是@docount為0的情況

else

begin

if @ordertype != 0

begin

set @strtmp = '<(select min'

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

--如果@ordertype不是0,就執行降序,這句很重要!

endelse

begin

set @strtmp = '>(select max'

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

endif @pageindex = 1

begin

if @strwhere != ''   

set @strsql = 'select top ' + str(@pagesize) +' '+@strgetfields+ '  from ' + @tblname + ' where ' + @strwhere + ' ' + @strorder

else

set @strsql = 'select top ' + str(@pagesize) +' '+@strgetfields+ '  from '+ @tblname + ' '+ @strorder

--如果是第一頁就執行以上**,這樣會加快執行速度

endelse

begin

--以下**賦予了@strsql以真正執行的sql**

set @strsql = 'select top ' + str(@pagesize) +' '+@strgetfields+ '  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) +' '+@strgetfields+ '  from '

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

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

+ @fldname + ' from ' + @tblname + ' where ' + @strwhere + ' '

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

end

end   

print (@strsql)

exec (@strsql)

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

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

儲存過程的分頁!!

create proc up gettopiclist a strforumid varchar 50 a intpageno int a intpagesize int as 定義區域性變數 declare intbeginid int declare intendid int declare i...

分頁的儲存過程

create proc proc pager tblname varchar 20 表名 pagesize int 10,每頁資料行數 pagenum int 1,頁數 sortname varchar 20 排序列名 asdeclare count int set count pagesize p...