题外话:这文章很少见,注意我说的是内容不与网上的相同,网上关于存储过程分页一找一大堆,但是我的这个真的是自己写出来,当然不是我创造出来,本来就有这种函数,但是这种思想不错,资料来源于英文网站。
文章我发表过一次,有人转载过一次,我就看到过在网上出现两次,但是这两个网站好像现在打不开,我觉得这文章拿出来分享。
这里主要是sql server 数据库
[SQL] 纯文本查看 复制代码 --这里建一个执行我们想要数据总的结果查询sql语句存储过程
if object_id(N'PageSQL') is not null
drop proc PageSQL
go
create proc PageSQL
(
@sqlstr nvarchar(100)
)
as
begin
exec sp_executesql @sqlstr
end
go
--这里再建一个把我们执行结果后的数据进行分页的存储过程
if object_id(N'Page') is not null
drop proc Page
go
create proc Page
(
@pagesize int,--页面大小
@pagenum int,--页码
@filed varchar(20)--列名
)
as
begin
Exec sp_serveroption 'lenovo-d35fdba5','Data Access',True --这句是设置sql server 也可以在下面设置
declare @sql nvarchar(200)
declare @num int
set @num=(@pagesize*(@pagenum-1))
set @sql='select top '+Convert(nvarchar(10),@pagesize)+' * from #T where ('+@filed+' not in (select top'+Convert(nvarchar(10),@num)+' '+@filed+' from #T order by '+@filed+'))order by '+@filed
exec sp_executesql @sql
end
go
--Exec sp_serveroption 'lenovo-d35fdba5','Data Access',True
Select * INTO #T From OpenQuery([lenovo-d35fdba5],'QTFLW.dbo.PageSQL''select * from T_UserInfo''') --这里面就是我们想要执行的sql语句,当然多表也是可以的(我主要是执行我们任何的sql语句),为什么网上有那么多,不去用,原因就是当有多表时,就会出现问题。这里技术要点也就是这个OpenQuery函数。
exec Page 2,3,'UserName' --这里执行第二个存储过程,就能对我们的结果进行想要的分页.
思路:就是把sql语句执行的结果先放入一个临时表,再对临时表进行分页...按正常思路写出语句是没有用的,。。大家可以去试试~~所以才说这个在网上真的很难找到。 |