自己寫的 還算通用 呵呵 備用
採用的是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
@sql
exec sp_executesql @sql,n'
@page int output
',@page output--
查詢總行數
select
@pagecount
=ceiling((@page
+0.0)/
@toppage) --
計算頁數
@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 第...