SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
--名稱:分頁存儲(chǔ)過程
--使用示例 EXEC sp_PageIndex '*',' FROM StuSources ',2,10
--注意
--目前還沒有對(duì)輸入的參數(shù)進(jìn)行嚴(yán)格的驗(yàn)證
--默認(rèn)為輸入都是合法有效的
ALTER PROC sp_PageIndex
@sqlSelect varchar(800) --SELECT 后面 FROM 前面 的 字段 不用包含SELECT
,@sqlFrom varchar(800) --FROM 后面 的 字段 包含F(xiàn)ROM
,@countPerPage int -- 每頁數(shù)據(jù)行數(shù)
,@toPage int --要轉(zhuǎn)到的頁碼
AS
BEGIN
-- 根據(jù)每頁數(shù)據(jù)行數(shù) 和 要轉(zhuǎn)到的頁碼 得到 數(shù)據(jù)起止點(diǎn)
Declare @start int
Declare @end int
set @end = @countPerPage * @toPage
set @start = @countPerPage * (@toPage - 1) + 1
-- 臨時(shí)表名稱 可隨機(jī)命名
Declare @tmpTable varchar(10)
SET @tmpTable ='#tmp'
Declare @sqlStr varchar(800)
-- 創(chuàng)建數(shù)據(jù)源到臨時(shí)表
SELECT @sqlStr = 'SELECT Identity(int,1,1) AS RowIndex,'
SELECT @sqlStr = @sqlStr + rtrim(@sqlSelect) + ' INTO '+ @tmpTable
SELECT @sqlStr = @sqlStr + rtrim(@sqlFrom)
-- 查詢臨時(shí)表 得到所需要的數(shù)據(jù)
SELECT @sqlStr = @sqlStr + ' '+'SELECT '+ rtrim(@sqlSelect) +' FROM ' + @tmpTable
SELECT @sqlStr = @sqlStr + ' WHERE RowIndex BETWEEN ' + Convert(char,@start) + " AND " + Convert(char,@end)
-- 刪除臨時(shí)表
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
新聞熱點(diǎn)
疑難解答
圖片精選