sql2000下 分页存储过程

王朝mssql·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

--名称:分页存储过程

--使用示例 EXEC sp_PageIndex '*',' FROM StuSources ',2,10

--注意

--目前还没有对输入的参数进行严格的验证

--默认为输入都是合法有效的

ALTER PROC sp_PageIndex

@sqlSelect varchar(800) --SELECT 后面 FROM 前面 的 字段 不用包含SELECT

,@sqlFrom varchar(800) --FROM 后面 的 字段 包含FROM

,@countPerPage int -- 每页数据行数

,@toPage int --要转到的页码

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_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

http://www.cnblogs.com/freeliver54/archive/2006/12/31/608858.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航