锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
CREATE procedure pagination
@str_sql varchar(1000) = '*', -- 鎵ц鐨凷QL 涓嶅惈Order by 鍐呭
@str_orderfield varchar(255)='''', -- 鎺掑簭鐨勫瓧孌靛悕
@page_size int = 10, -- 欏靛ぇ灝?nbsp;
@page_index int = 0, -- 欏電爜
@order_type int, -- 璁劇疆鎺掑簭綾誨瀷, 闈?-1 鍊煎垯闄嶅簭
@total_count int output -- 榪斿洖璁板綍鎬繪暟, 闈?0 鍊煎垯榪斿洖
as
---------------------
-- 鑾峰彇鎸囧畾欏電殑鏁版嵁--
---------------------
declare @strsql varchar(5000) -- 涓昏鍙?br />
declare @strtmp varchar(5000) -- 涓存椂鍙橀噺
declare @strorder varchar(400) -- 鎺掑簭瀛椾覆
declare @cruRow int -- 褰撳墠琛屽彿
--鎵ц鎬繪暟緇熻
exec getRowCount @str_sql,@total_count output
set @strtmp = ' select * from ' +
' (select top ' + convert(varchar(10),@page_size) + ' * from ' +
' (select top ' + convert(varchar(10),(@page_index + 1) * @page_size) +' * from '+ -- N+1欏?br />
' ('+ @str_sql +') Src '
--鎺掑簭鏂瑰悜
if @order_type !=0
begin
set @strsql= @strtmp +
' order by @str_orderfield asc) a ' +
' order by @str_orderfield desc)b' +
' order by @str_orderfield asc'
end
else
begin
set @strsql= @strtmp +
' order by @str_orderfield desc) a ' +
' order by @str_orderfieldasc)b' +
' order by @str_orderfield desc'
end
exec (@strsql)
GO
----------------------------------------------------------------------------
2.鍒嗛〉瀛樺偍榪囩▼鎵ц涓敤鍒扮殑琛屾暟緇熻
create procedure getRowCount
@sql nvarchar(2000),
@count int output
as
begin
--------------------
-- 鑾峰彇鏁版嵁鎬昏鏁?--
--------------------
declare @tmpsql nvarchar(2000)
set @tmpsql='select @count=count(*) from ('+ @sql +') a'
execute sp_executesql @tmpsql,N'@count int output',@count output
end
GO