sql中单表的存储过程
ALTER procedure [dbo].[proc_Pager]
@tablename varchar(30),
@keycolumn varchar(30),
@selectcolumn varchar(300),
@ordercolumn varchar(30),
@orderdirec varchar(5),
@pagesize int,
@pageindex int,
@where varchar(300),
@rowcount int output,
@pagecount int output
as
begin
declare @tempsql nvarchar(max)
declare @sql varchar(max)
if (@where is null or @where ='')
set @tempsql=N' select @rowcount=count(*) from ' + @tablename
else
set @tempsql=N' select @rowcount=count(*) from ' + @tablename + ' where ' + @where
execute sp_executesql @tempsql,N' @rowcount int output ',@rowcount output
if @pageindex < 1
set @pageindex=1
if @rowcount%@pagesize=0
set @pagecount=@rowcount/@pagesize
else
set @pagecount=@rowcount/@pagesize + 1
if (@pagecount = 0)
set @pagecount = 1
if @pageindex > @pagecount
set @pageindex=@pagecount
if (@where is null or @where ='')
begin
set @sql='select top ' + cast(@pagesize as varchar(10)) + ' ' + @selectcolumn + ' from ' + @tablename +
' where ' + @keycolumn + ' not in (select top ' +
cast(@pagesize * (@pageindex - 1) as varchar(10)) + ' ' + @keycolumn + ' from ' +
@tablename + ' order by ' + @ordercolumn + ' ' + @orderdirec + ') order by ' + @ordercolumn + ' ' + @orderdirec
end
else
begin
set @sql='select top ' + cast(@pagesize as varchar(10)) + ' ' + @selectcolumn + ' from ' + @tablename +
' where ' + @where + ' and ' + @keycolumn + ' not in (select top ' +
cast(@pagesize * (@pageindex - 1) as varchar(10)) + ' ' + @keycolumn + ' from ' +
@tablename + ' where ' + @where + ' order by ' + @ordercolumn + ' ' + @orderdirec + ')' + ' order by ' + @ordercolumn + ' ' + @orderdirec
end
print @sql
print @pagecount
print @rowcount
execute(@sql)
end
浙公网安备 33010602011771号