sql 中表Student有50条记录,如何使用存储过程快速分页,输入参数为页数,每页的记录
发布网友
发布时间:2022-04-08 19:15
我来回答
共2个回答
热心网友
时间:2022-04-08 20:44
假设你的表的排序字段是ID,如果不是自己替换掉就行,如果多列可以替换为
ID1,ID2.....按顺序就行
create proc fenye
@x int,----第x页
@y int ----每页显示y条记录
as
declare @sql nvarchar(max);
begin
set @sql='
select * from (
SELECT *,row_number()over(order by ID) as rm FROM Student )t
where t.rm>$y$*($x$-1) and t.rm<=$y$*$x$'
set @sql=replace(@sql,'$y$',@y);
set @sql=replace(@sql,'$x$',@x);
print(@sql);
exec sp_executesql @sql;
end;
---exec fenye 5,20
--显示第五页的数据,每页显示20条
热心网友
时间:2022-04-08 22:02
create process mypro
@page int
@record int
as
declare @sqlstr nvarchar(500)
set @sqlstr=' select top ' + convert(nvarchar(50), @page*@record) +' *
from Student
except
select top '+convert(nvarchar(50), (@page-1)*@record)+' *
from Student '
exe sp_executesql @sqlstr