分页存储过程

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值