一个简单的分页实例

 一个分页procedure 实例:

获取指定表,指定查询条件的条数

 

 

  1. --create by veakou@126.com
  2. --20080607
  3. CREATE          PROCEDURE [dbo].[U_C_GetTableRowCount] 
  4.     @TableName varchar(40),         ----查询对象表名
  5.     @ColumnName varchar(40) ='*',       ----查询对象表列
  6.     @Condition varchar(200) =' 1=1',    ----查询对象(纯粹查询条件不包含where关键字)
  7.     --@ReturnType bit =0,           ----返回方式类型,0:select方式返回 1: output参数返回
  8.     @Count  int out             ----查询结果返回值
  9.     
  10. AS
  11.     declare @sql nvarchar(4000)
  12.     set @sql=N'select @Count=count('+@ColumnName+N') from ['+@TableName+N']'
  13.          +case when @Condition=' 1=1' then '' else N' where '+@Condition end
  14.     exec sp_executesql @sql,
  15.     N'@Count int out',
  16.     @Count out
  17.     
  18. GO

分页存储过程:

  1. --create by Veakou@126.com
  2. --2008-6-10
  3. CREATE     PROCEDURE [dbo].[U_C_Page] 
  4.     @TableName varchar(40),         ----查询表名
  5.     @ColumnsName nvarchar(200) =' * ',  ----查询字段名(column1,column2......)
  6.     @PKColumn varchar(20),          ----主键字段
  7.     @Condition nvarchar(1000) ='  1=1 ',    ----查询条件
  8.     @OrderType bit =0,          ----排序类型 0:asc 1:desc
  9.     @OrderColumn varchar(20),       ----排序字段
  10.     @PageSize int =20,          ----页面尺寸
  11.     @CurrentPage int =1         ----当前页
  12.     
  13. AS
  14. Begin
  15.     declare @strSql nvarchar(4000)      ----sql字串
  16.     declare @strTmp nvarchar(200)       ----临时变量
  17.     declare @orderStr nvarchar(200)     ----排序字串
  18.     Begin
  19.         if @OrderType = 0
  20.         Begin
  21.                 set @orderStr = ' order by '+@OrderColumn+' asc'
  22.             set @strTmp = '>(select max('
  23.         End
  24.         else
  25.         Begin
  26.             set @orderStr = ' order by '+@OrderColumn+' desc'
  27.             set @strTmp = '<(select min('
  28.         End
  29.     End
  30.     if @CurrentPage = 1 ----第一页
  31.     Begin
  32.         set @strSql = 'select top '+str(@PageSize)+' '+@ColumnsName+' from '+@TableName+' where '+@Condition+@orderStr
  33.     End
  34.     else            ----第N页
  35.     Begin
  36.         set @strSql = 'select top '+str(@PageSize)+' '+@ColumnsName+' from '+@TableName+' where '+@Condition+ ' and '+@PKColumn+@strTmp+@PKColumn+') from 
  37.             (select top '+str((@CurrentPage-1)*@PageSize)+' '+@PKColumn+' from '+@TableName+' where '+@Condition+@orderStr+'as tmp)'+@orderStr
  38.     End /**/
  39.         
  40.     Exec(@strSql)
  41. End
  42. GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值