【SQL 代码】Sql分页(自用)

效果图:

 

下面是存储过程的创建,用的时候调用就行了

/****** Object:  StoredProcedure [dbo].[spSqlPageByRownumber]    Script Date: 2015/3/5 17:34:38 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE proc [dbo].[spSqlPageByRownumber]
@tbName varchar(255),        --表名
@tbFields varchar(1000),      --返回字段
@PageSize int,                --页尺寸
@PageIndex int,                --页码
@strWhere varchar(1000),    --查询条件
@StrOrder varchar(255)  --排序条件
as
declare @strSql varchar(5000)    --主语句
declare @strSqlCount nvarchar(500)--
--------------总记录数---------------
if @strWhere !=''
begin
set @strSqlCount='Select count(*) as TotalCout from  ' + @tbName + ' where '+ @strWhere
end
else
begin
set @strSqlCount='Select count(*) as TotalCout from  ' + @tbName
end
--------------分页------------
if @PageIndex <= 0
begin
  set @PageIndex = 1
end
if @strWhere !=''
begin
set @strSql='Select * from (Select  row_number() over('+@strOrder+') rowId,'+ @tbFields
+' from ' + @tbName + ' where  ' + @strWhere+' ) tb where tb.rowId >'+str((@PageIndex-1)*@PageSize)
+' and tb.rowId <= ' +str(@PageIndex*@PageSize)
end
else
begin
set @strSql='Select * from (Select  row_number() over('+@strOrder+') rowId,'+ @tbFields
+' from ' + @tbName + ' ) tb where tb.rowId >'+str((@PageIndex-1)*@PageSize)
+' and tb.rowId <= ' +str(@PageIndex*@PageSize)
end

exec(@strSqlCount)
exec(@strSql)
GO

 执行:

exec [dbo].spSqlPageByRownumber 'GoodsCategory','*',10,2,'Cid > 0','order by Cid desc'

 

posted @ 2014-09-30 12:25  叶超Luka  阅读(755)  评论(1编辑  收藏  举报