資料庫分頁

2022-08-13 02:57:19 字數 2562 閱讀 4021

自己寫的 還算通用 呵呵 備用

採用的是top方法;經測試速度還算不錯,注釋部分有max方法,速度 第一頁最快,

儲存過程

use

[csrl]go

/****** object: storedprocedure [dbo].[pageindex] script date: 12/07/2011 10:26:36 *****

*/set ansi_nulls on

goset quoted_identifier on

gocreate

procedure

[dbo

].[pageindex](

@tbname

varchar(100),--

表名字@strfield

varchar(100),--

查詢字段

@idfield

varchar(50),--

主鍵id

@toppage

int=

10,--

每頁行數

@pagenow

int=

0,--

查詢頁數

@strwhere

varchar(100) =

'1=1

',--

查詢條件

@pagecount

int=

0 output,--

總頁數@order

varchar(200)=

''--

排序條件

) as

declare

@sql

nvarchar(1000),

@sqloder

varchar(200)

begin

if(@pagecount

=0)--

總頁數begin

declare

@page

intset

@sql='

select @page=count('+

@idfield+'

) from '+

@tbname+'

where '+

@strwhere

print

@sql

exec sp_executesql @sql,n'

@page int output

',@page output--

查詢總行數

select

@pagecount

=ceiling((@page

+0.0)/

@toppage) --

計算頁數

print

@pagecount

endif(@order

!='')--

排序條件

begin

set@sqloder='

order by '+

@idfield

endelse

begin

set@sqloder=''

endif(@strwhere

!='')--

查詢條件

begin

set@strwhere='

where '+

@strwhere

endbegin

--執行sql語句

--/*

set@sql='

select top '+

cast(@toppage

asvarchar(200))+''

+@strfield+'

from (select row_number() over (order by '+

@idfield+'

) as rownumber, '+

@strfield+'

from module) a where rownumber > '+

cast(@toppage

asvarchar(200))+

'* ('+

cast(@pagenow

asvarchar(200))+

'-1) '+

@sqloder

--*/

--print @sql

/*set @sql ='select top '+cast(@toppage as varchar(200))+' '+@strfield+ '

from '+@tbname+'

where '+@idfield+' >

( select isnull(max('+@idfield+'),0)

from

( select top ('+cast(@toppage as varchar(200))+'*('+cast(@pagenow as varchar(200))+'-1))

'+@idfield+' from '+@tbname+' '+@sqloder+'

) a

) '+@sqloder

*/print (@sql)

exec (@sql)

endend

資料庫分頁

mysql 分頁採用limt 關鍵字select from t order limit 5,10 返回第6 15 行資料 select from t order limit 5 返回前5 行 select from t order limit 0,5 返回前5 行 mssql 2000 分頁採用to...

資料庫分頁

oracle分頁 方法1 根據rowid來分 select from uop crm1.tf f user where rowid in select rid from select rownum r,rid from select rowid rid from uop crm1.tf f user...

資料庫分頁

一 mysql 資料庫分頁查詢 mysql資料庫實現分頁比較簡單,提供了limit函式。一般只需要直接寫到sql語句後面就行了。limit子句可以用來限制由select語句返回過來的資料數量,它有乙個或兩個引數,如果給出兩個引數,第乙個引數指定返回的第一行在所有資料中的位置,從0開始 注意不是1 第...