顶一楼的,用TOP关键字,简洁而有效!而游标虽然实用,却要有声明 打开 提取数据 关闭 几个步骤例如按姓名 和地主查询Students表中前20条记录,则 SELECT TOP 20 SName,SAddress FROM Students WHERE SSex=0(此时0代表性别),另外,如果有其他要求,则可加上排序 ORDER BY ASC DESC等
需要用到一个页数的变量如p,如果需要更可以加一个页面显示的数量如psizesql = "select top "+ psize + "* from (select top "+ p*psize +" from table order by id desc)a order by id asc";PS:别少了a...
一个最简单的分页存储过程,你先看看吧!create proc p_pagelist @pagesize int, ---显示多少行, @pagecurrent int, ----显示第几页, @name varchar(10) ----查询条件,自己扩展 as begin declare @id1 varchar(20) declare @id2 varchar(20) declare @sql varchar(1000) ----这个变量存你的查询语句。 select @id1=convert(varchar(20),@pagesize) -----将int 转换为varchar类型的 select @id2=convert(varchar(20),(@pagecurrent-1)*@pagesize) select @sql=' SELECT top '+@id1+' * FROM [dbo.订单] where dbo.订单.客户ID='''+@name+''' and dbo.订单.订单ID not in ( SELECT top '+@id2+' dbo.订单.订单ID FROM [dbo.订单] where dbo.订单.客户ID='''+@name+''' order by dbo.订单.订单ID ) order by dbo.订单.订单ID' end exec(@sql)exec p_pagelist '5','1','JuJu'---测试
可以把一个查询结果集做为一个表这是个很有用的方法 a 就是那个select语句返回的结果集 今天刚整理了些常用的东东http://blog.csdn.net/sunyujia/archive/2008/05/14/2446543.aspx
@pagesize int, ---显示多少行,
@pagecurrent int, ----显示第几页,
@name varchar(10) ----查询条件,自己扩展
as
begin
declare @id1 varchar(20)
declare @id2 varchar(20)
declare @sql varchar(1000) ----这个变量存你的查询语句。 select @id1=convert(varchar(20),@pagesize) -----将int 转换为varchar类型的
select @id2=convert(varchar(20),(@pagecurrent-1)*@pagesize) select @sql='
SELECT top '+@id1+' * FROM [dbo.订单]
where dbo.订单.客户ID='''+@name+''' and dbo.订单.订单ID not in
(
SELECT top '+@id2+' dbo.订单.订单ID
FROM [dbo.订单]
where dbo.订单.客户ID='''+@name+'''
order by dbo.订单.订单ID
)
order by dbo.订单.订单ID'
end
exec(@sql)exec p_pagelist '5','1','JuJu'---测试
a 就是那个select语句返回的结果集 今天刚整理了些常用的东东http://blog.csdn.net/sunyujia/archive/2008/05/14/2446543.aspx