SQL萬(wàn)能分頁(yè)存儲(chǔ)過(guò)程
瀏覽量:2700
create proc fenye
(
@pageindex int,--行數(shù)--
@pagenum int,--頁(yè)次--
@strsql nvarchar(4000),--SQL語(yǔ)句--
@order nvarchar(50),--排序字段--
@count int output --輸出參數(shù),總行數(shù)--
)
as
declare @orderdesc nvarchar(100)
declare @orderasc nvarchar(100)
declare @sql nvarchar(4000)
declare @rows int
begin
set @sql='select @a=count(*) from (' +@strsql+ ') as a '
exec sp_executesql @sql,N'@a int output',@count output
set @rows=@pageindex*@pagenum
if(@rows>@count)
set @pageindex=@pageindex-(@rows-@count)
if(@pageindex<0)
set @pageindex=0
if @order!=''
begin
set @orderdesc='order by '+@order+' desc'
set @orderasc='order by '+@order+' asc'
end
else
begin
set @orderdesc='order by id desc'
set @orderasc='order by id asc'
end
exec('
select * from (
select top '+@pageindex+' * from(
select * from (
select top ('+@rows+') * from ('+@strSql+' ) as a '+@orderdesc+')
as a ) as a '+@orderasc+') as a '+@orderdesc+'
')
end
@pageindex int,--行數(shù)--
@pagenum int,--頁(yè)次--
@strsql nvarchar(4000),--SQL語(yǔ)句--
@order nvarchar(50),--排序字段--
@count int output --輸出參數(shù),總行數(shù)--
)
as
declare @orderdesc nvarchar(100)
declare @orderasc nvarchar(100)
declare @sql nvarchar(4000)
declare @rows int
begin
set @sql='select @a=count(*) from (' +@strsql+ ') as a '
exec sp_executesql @sql,N'@a int output',@count output
set @rows=@pageindex*@pagenum
if(@rows>@count)
set @pageindex=@pageindex-(@rows-@count)
if(@pageindex<0)
set @pageindex=0
if @order!=''
begin
set @orderdesc='order by '+@order+' desc'
set @orderasc='order by '+@order+' asc'
end
else
begin
set @orderdesc='order by id desc'
set @orderasc='order by id asc'
end
exec('
select * from (
select top '+@pageindex+' * from(
select * from (
select top ('+@rows+') * from ('+@strSql+' ) as a '+@orderdesc+')
as a ) as a '+@orderasc+') as a '+@orderdesc+'
')
end
CRM定制,辦公OA,軟件開發(fā),沈陽(yáng)易勢(shì)科技最專業(yè)