sql分頁儲存過程

2021-08-22 07:58:40 字數 2251 閱讀 4116

asp呼叫通用儲存過程2007-03-07 17:09

create proc absolutepages

(@pagesize int=10 , --每頁顯示的記錄數

@pagecurrent int=1 , --當前要顯示的頁號

@fdname varchar(100)='' , --主鍵名或者標識列名

@selectstr varchar(2000)='', --select子句,不包含select關鍵字,如:*或者id,userid,username等。

@fromstr varchar(1000)='', --from子句,不包含from關鍵子,如:mytable或者mytable,yourtable

@wherestr varchar(2000)='', --where子句,不包含where關鍵字,如空的,或者 id>2 等

@orderbystr varchar(1000)='' --order by 子句,不包含order by 子句 ,如id desc,userid asc 等)as

------------------定義區域性變數------------------

declare @id1 varchar(20),@id2 varchar(20) --開始和結束的記錄號

declare @orderbysqls varchar(1000) --order by 子句

declare @wheresqls varchar(2000) --where 子句

declare @sqls nvarchar(4000) --最終組合成的sqls語句

declare @tmpstr varchar(2000) --臨時語句

------------

if @wherestr <> ''

set @wheresqls = ' where (' + @wherestr+ ')'

else

set @wheresqls = ''

------------

if @orderbystr <> ''

set @orderbysqls = ' order by '+ @orderbystr

else

set @orderbysqls = ''

------------

set @tmpstr = @wheresqls

------------------如果顯示第一頁,可以直接用top來完成------------------

if @pagecurrent <= 1

begin

select @id1 = convert(varchar(20),@pagesize)

set @sqls = 'select top ' + @id1 + ' ' + @selectstr + ' from ' + @fromstr + @wheresqls + @orderbysqls

exec (@sqls)

endelse

begin

select @id1=convert(varchar(20),@pagesize),@id2=convert(varchar(20),(@pagecurrent-1)*@pagesize)

if @wheresqls <> ''

set @wheresqls = @wheresqls + ' and (' + @fdname +' not in(select top ' +@id2+ ' '+ @fdname +' from ' +@fromstr+ @wheresqls +@orderbysqls+ '))'

else

set @wheresqls = ' where ' + @fdname+ ' not in(select top '+ @id2+ ' ' +@fdname+ ' from '+ @fromstr+ @wheresqls+ @orderbysqls+ ')'

----------

set @sqls = 'select top '+ @id1 + ' ' + @selectstr+ ' from '+ @fromstr+@wheresqls +@orderbysqls

exec (@sqls)

endprint @sqls

return

goasp 呼叫:

recordset1.source = ""

absolutepages '10','3','product_id','product_id,product_name,class_id','product','class_id=1','product_id desc'

sql 儲存過程分頁

create proc myx prpagerecordset querystr nvarchar 1000 keyfield nvarchar 200 pagesize int,pagenumber int as begin declare sqltext as nvarchar 4000 dec...

SQL 儲存過程 分頁

1.俄羅斯儲存過程 的改良版 create procedure pagination1 pagesize int,頁面大小,如每頁儲存20條記錄 pageindex int 當前頁碼 as set nocount on begin declare indextable table id int id...

SQL 分頁儲存過程

create procedure splitpage sql nvarchar 4000 不帶排序語句的sql語句 page int,頁碼 recsperpage int,每頁容納的記錄數 id varchar 255 需要排序的不重複的id號 sort varchar 255 排序欄位及規則 as...