sql2000下 分页存储过程

2008-04-02 10:42:52来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Sql Sever数据库自动备份

下一篇: 用OPENXML函数将XML数据转为关联数据