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