由于是条件选择,当然不能用ID来分割,不用存储过程好象没有好的办法了
但是可以简单的利用TOP来提高效率,比如每页显示50条,第一页就可以用select top 50...,第二页用 select top 100...,依次类推。必须注意,如果直接用select top 50 数据库将不会分页,所以你首先要得到总条数,这个就看你的习惯了
CREATE PROCEDURE dbo.log_login_get
@page int,
@page_size int
AS
declare @intBeginID int
declare @intEndID int
declare @intMaxCount int
declare @intPageCount int
declare @intRowCount int
declare @intMaxPage int
set nocount on
select @intMaxCount=count(*) from log_login
if(@intMaxCount=0)
return 0
set @intMaxPage=Round((@intMaxCount/@page_size),0)
if(@page-1>@intMaxPage)
select @page=@intMaxPage+1
if(@page<1)
select @page=1
set @intRowCount=(@page-1)*@page_size+1
--print @intRowCount
set rowcount @intRowCount
select @intBeginId=id from log_login order by id desc
--print @intBeginId
select @intRowCount=@page*@page_size
--print @intRowCount
set rowcount @intRowCount
select @intEndId=id from log_login order by id desc
--print @intEndId
set rowcount 0
set nocount off
select * from log_login where id between @intEndId and @intBeginId order by id desc
GO