sql存储过程,分页,数据量

来源:互联网 发布:linux系统有哪些版本 编辑:程序博客网 时间:2024/04/30 09:10
create procedure getAByPage  --得到部门信息,注:@id:大于0,取单条数据;小于等于0时,若@pageOrCount=1:多少条数据,@pageOrCount=2取分页数据
@id int,@pageOrCount int,@pageCount int,@pageIndex int,
@Name varchar(200),@Text varchar(max),@argStr nvarchar(max)
as
declare @sqlStr nvarchar(max)
declare @sql nvarchar(max)
declare @sqlEnd nvarchar(4000)
begin -----
if(@id>0)
begin
set @sqlStr='select ID,Name,addTime from table1  where ID='+str(@id)
end
else
begin
if(@pageOrCount=1) --取数据,即共多少行
begin
set @sqlStr='select count(*) from'
end
if(@pageOrCount=2)  --取分页数据,即取数据
begin
set @sqlStr='select * from'
end
set @sqlStr=@sqlStr+' (select ID,Name,addTime,row_number() over(order by addTime DESC) as rowIndex
from('
set @sql='select ID,Name,addTime from table 1 where 1=1'
if(@argStr!='')
begin
set @sql=@sql+@argStr
end
set @sqlStr=@sqlStr+@sql+') as a ) as b '
if(@pageOrCount=1) --取数据,即共多少行
begin
set @sqlEnd=''
end
if(@pageOrCount=2)  --取分页数据,即取数据
begin
set @sqlEnd='where rowIndex between '+rtrim(ltrim(str((@pageIndex-1)*@pageCount+1)))+' and '+rtrim(ltrim(str(@pageIndex*@pageCount)))
end
set @sqlStr=@sqlStr+@sqlEnd
end
end
exec(@sqlStr)
原创粉丝点击