asp.Netデータアクセス層ストレージプロシージャページング文

1714 ワード

したがって、データ・アクセス・レイヤでページを分割することが望ましい、そうであれば、ストレージ・プロシージャを使用してページを分割する.以下は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ページのバックグラウンドコードでこのストレージプロセスを呼び出すと、所望のデータを取得することができる.