sql2000下 分页存储过程

 

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

0
0
(请您对文章做出评价)
« 上一篇:在使用AdomdConnection 连接 SQL2000的AS数据库时 遭遇“由于目标机器积极拒绝,无法连接。”
» 下一篇:用sql 得到某表下的列名

posted on 2006-12-31 13:29 freeliver54 阅读(3321) 评论(17)  编辑 收藏 网摘 所属分类: MS SQL

评论

#1楼 2008-11-04 14:23 ★海戰鷹      

ALTER procedure P_GetPagedOrders2000
(@startIndex int,
@pageSize int
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int)
declare @PageUpperBound int
set @PageUpperBound=@startIndex+@pagesize-1
set rowcount @PageUpperBound
insert into @indextable(nid) select orderid from orders order by orderid desc
select O.orderid,O.orderdate,O.customerid,C.CompanyName,E.FirstName+' '+E.LastName as EmployeeName
from orders O
left outer join Customers C
on O.CustomerID=C.CustomerID
left outer join Employees E
on O.EmployeeID=E.EmployeeID
inner join @indextable t on
O.orderid=t.nid
where t.id between @startIndex and @PageUpperBound order by t.id
set nocount off
RETURN

互相学习,我觉得这个存储过程也挺不错
  回复  引用  查看    

#2楼 2009-02-04 20:41 天际翔龙      

当分页的表中存在有自动标识列的时候会有错误!

错误信息:无法使用 SELECT INTO 语句向表 '#tmp' 中添加标识列,该表中已有继承了标识属性的列 'Id'。
  回复  引用  查看    

导航

统计

公告

每一天都有新的开始
每一天都是新的开始
愿我们
善始善终 持之以恒
不管前方 是希望还是迷茫
我们都只有一个信念
让我们的爱  伴我们终生

搜索

 

随笔分类

随笔档案

techLINKS

友情链接

积分与排名

最新评论

阅读排行榜

评论排行榜

60天内阅读排行