Chinaunix首页 | 论坛 | 博客
  • 博客访问: 303782
  • 博文数量: 77
  • 博客积分: 394
  • 博客等级: 一等列兵
  • 技术积分: 562
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-19 16:15
文章分类
文章存档

2015年(17)

2014年(1)

2012年(59)

分类: C#/.net

2015-02-03 09:52:20

  1. create PROCEDURE  [dbo].[SP_ShowPageList] 
  2.  @tblName varchar(4000), -- 表名如:'xtest'
  3.  @strGetFields varchar(1000) = '*', -- 需要返回的列如:'xname,xdemo'
  4.  @strOrder varchar(255)='', -- 排序的字段名如:'order by id desc'
  5.  @strWhere varchar(1500) = '', -- 查询条件(注意:不要加where)如:'xname like ''%222name%''' 
  6. @pageIndex int = 1, -- 页码如:2
  7.  @pageSize int = 20, -- 每页记录数如:20
  8.  @doCount bit=0, -- 非0则统计,为0则不统计(统计会影响效率)
  9.  @recordCount int output -- 记录总数
  10.  AS
  11.  
  12. declare @strSQL varchar(5000)
  13. declare @strCount nvarchar(1000)
  14.  --总记录条数
  15.  if(@doCount!=0)
  16.  begin
  17.  if(@strWhere !='')
  18.  begin
  19.  set @strCount='set @num=(select count(1) from '+ @tblName + ' where '+@strWhere+' )'
  20.  end
  21.  else
  22.  begin
  23.  set @strCount='set @num=(select count(1) from '+ @tblName + ' )'
  24.  end
  25.  EXECUTE sp_executesql @strCount ,N'@num INT output',@RecordCount output
  26.  end
  27.  
  28. if @strWhere !=''
  29.  begin
  30.  set @strWhere=' where '+@strWhere
  31.  end
  32.  set @strSQL='SELECT * FROM (SELECT ROW_NUMBER() OVER ('+@strOrder+') AS ROWID,'
  33.  set @strSQL=@strSQL+@strGetFields+' FROM '+@tblName+' '+@strWhere
  34.  set @strSQL=@strSQL+') AS sp WHERE ROWID BETWEEN '+str((@PageIndex-1)*@PageSize+1)
  35.  set @strSQL=@strSQL+' AND '+str(@PageIndex*@PageSize)
  36.  --select @strSQL
  37.  exec (@strSQL)


  38. GO
阅读(1782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~