sql2000下 分頁(yè)存儲(chǔ)過(guò)程
SET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO--名稱:分頁(yè)存儲(chǔ)過(guò)程--使用示例 EXEC sp_PageIndex '*',' FROM StuSources ',2,10--注意 --目前還沒(méi)有對(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 -- 每頁(yè)數(shù)據(jù)行數(shù),@toPage int --要轉(zhuǎn)到的頁(yè)碼
AS
BEGIN
-- 根據(jù)每頁(yè)數(shù)據(jù)行數(shù) 和 要轉(zhuǎn)到的頁(yè)碼 得到 數(shù)據(jù)起止點(diǎn)Declare @start intDeclare @end int
set @end = @countPerPage * @toPageset @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 '+@tmpTableEXEC (@sqlStr)
END
GOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GOhttp://www.cnblogs.com/freeliver54/archive/2006/12/31/608858.html
