您的位置:首页 > 其它

简单的存储过程分页

2012-05-04 16:26 281 查看
调用

exec dbo.gc_IP 'id=10',2,1

USE [Studentnew]

GO

/****** Object: StoredProcedure [dbo].[gc_IP] Script Date: 05/04/2012 16:30:06 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

--存储过程分页

ALTER PROCEDURE [dbo].[gc_IP]

@strWhere varchar(1500) , -- 查询条件 (注意: 不要加 where)

@PageSize int , -- 页尺寸

@PageIndex int -- 页码

AS BEGIN

declare @strSQL varchar(5000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

declare @strOrder varchar(400) --排序类型

set @strTmp = '<(select min'

set @strOrder = ' order by id desc'

if @PageIndex <= 1

begin

set @PageIndex=1

if @strWhere != ''

set @strSQL = 'select top ' + str(@PageSize) +' * from a where ' + @strWhere + ' ' + @strOrder

else

set @strSQL = 'select top ' + str(@PageSize) +' * from a '+ @strOrder

--如果是第一页就执行以上代码,这样会加快执行速度

end

else

begin

--以下代码赋予了@strSQL以真正执行的SQL代码

set @strSQL = 'select top ' + str(@PageSize) +' * from a

where id' + @strTmp + '(id) from (select top ' + str((@PageIndex-1)*@PageSize) + ' id from a' + @strOrder + ') as tblTmp)'+ @strOrder

if @strWhere != ''

set @strSQL = 'select top ' + str(@PageSize) +' * from a

where id' + @strTmp + '(id) from

(select top ' + str((@PageIndex-1)*@PageSize) + ' id from a where ' + @strWhere + ' '

+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

end

--print (@strSQL)

exec (@strSQL)

END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: