asp.net 数据访问层 存储过程分页语句

时间:2022-09-11 09:14:28
所以最好在数据访层分页,如果这样就要使用存储过程来分页.以下是以pubs 数据库中的employee表为例来进行数据分页的存储过程,你可以参考它根据实际情况来创建自己的存储过程. 

注:@pageindex 数据页的索引,@dataperpage 每页的记录数目,@howmanyrecords 用来获取总的记录数. 
复制代码代码如下:

create proc getdata @pageindex int,@dataperpage int,@howmanyrecords int output 
as 
declare @temptable table 

rowindex int, 
emp_id char(9), 
fname varchar(20), 
minit char(1), 
lname varchar(30) 

insert into @temptable 
select row_number() over(order by emp_id) as rowindex,emp_id,fname,minit,lname 
from employee 
select @howmanyrecords=count(rowindex) from @temptable 
select * from @temptable 
where rowindex>(@pageindex-1)*@dataperpage 
and rowindex<=@pageindex*@dataperpage 

declare @howmanyrecords int 
exec getdata 2,5,@howmanyrecords output 
select @howmanyrecords 
declare @x int, @y int, @z int 
select @x = 1, @y = 2, @z=3 
select @x,@y,@z 

create proc getdata2 @pageindex int,@dataperpage int,@howmanyrecords int output 
as 
declare @temptable table 

rowindex int, 
emp_id char(9), 
fname varchar(20), 
minit char(1), 
lname varchar(30) 

insert into @temptable 
select row_number() over(order by emp_id) as rowindex,emp_id,fname,minit,lname 
from employee 
select @howmanyrecords=count(rowindex) from @temptable 
select * from @temptable 
where rowindex>(@pageindex-1)*@dataperpage 
and rowindex<=@pageindex*@dataperpage 

其中Row_number 函数可以给检索来的每条记录按照排序来编号. 

接下来你就可以在asp.net 网页后台代码中调用该存储过程,就可以获取想要的数据.