MSSQL简单分页存储过程
/**//**********************
****简易分页存储过程***
****author:knife*****
****data:08-05-07******
**********************/
create procedure listpagetext
(
@pagerows int, --每页行数
@pageindex int, --索引
@tab nvarchar(500), --表名
@keyid nvarchar(50), --主键
@total nvarchar(200), --条件
@sort nvarchar(50), --排序
@kid nvarchar(200), --列名
@rows int output --总页数
)
as
begin
set nocount on
declare
@befrows int,
@sql nvarchar(1000)
set @befrows=@pagerows*(@pageindex-1)
set @sql=''select top ''+cast(@pagerows as nvarchar(50))+'' ''+@kid+'' from ''+@tab+''
where ''+@total+'' and ''+@keyid+'' not in (select top ''+cast(@befrows as nvarchar(50))+''
''+@keyid+'' from ''+@tab+'' where ''+@total+'' order by ''+@sort+'' ) order by ''+@sort+''''
EXEC (@sql)
print @sql
-------总行数------
set @sql=N''select @rows=count(*) from ''+@tab+'' where ''+@total+''''
exec sp_executesql @sql,N''@rows int out'',@rows out
end
GO
------------------------------测试------------------------------
declare @aa int
exec listpagetext 每页行数(例:10),页码(例:1),''表名(例:''table1'')'',''主键(例:''TID'')'',''条件(例:''1=1'')'',''排序(例:''TAddDate DESC'')'',''列名(例:''*'')'',@aa output
select @aa ----输出总行数
如有什么问题,可以留言!
补充:数据库,Mssql