sql2000下 分页存储过程

来源:互联网 发布:火力少年王软件下载 编辑:程序博客网 时间:2024/05/17 01:28
SET QUOTED_IDENTIFIEROFF
GO
SET ANSI_NULLSON
GO
--名称:分页存储过程
--
使用示例 EXEC sp_PageIndex '*',' FROM StuSources ',2,10
--
注意
--
目前还没有对输入的参数进行严格的验证
--
默认为输入都是合法有效的

ALTER PROC sp_PageIndex
@sqlSelect varchar(800)--SELECT 后面 FROM 前面 的 字段 不用包含SELECT
,@sqlFromvarchar(800)--FROM 后面 的 字段 包含FROM
,@countPerPageint-- 每页数据行数
,@toPageint--要转到的页码

AS

BEGIN


-- 根据每页数据行数 和 要转到的页码 得到 数据起止点
Declare@start int
Declare@end int

set@end =@countPerPage* @toPage
set@start = @countPerPage* (@toPage- 1)+ 1


-- 临时表名称 可随机命名
Declare@tmpTable varchar(10)
SET@tmpTable ='#tmp'

Declare@sqlStr varchar(800)
-- 创建数据源到临时表
SELECT@sqlStr = 'SELECT Identity(int,1,1) AS RowIndex,'
SELECT@sqlStr = @sqlStr+ rtrim(@sqlSelect)+ ' INTO '+@tmpTable
SELECT@sqlStr = @sqlStr+ rtrim(@sqlFrom)
-- 查询临时表 得到所需要的数据
SELECT@sqlStr = @sqlStr+ ''+'SELECT'+rtrim(@sqlSelect)+' FROM' +@tmpTable
SELECT@sqlStr = @sqlStr+ ' WHERE  RowIndex BETWEEN' +Convert(char,@start)+ " AND " +Convert(char,@end)
-- 删除临时表
SELECT@sqlStr = @sqlStr+ ''+'DROP TABLE'+@tmpTable
EXEC (@sqlStr)


END


GO
SET QUOTED_IDENTIFIEROFF
GO
SET ANSI_NULLSON
GO

原创粉丝点击