CSDN博客

img RUN_

一个简单的分页实例

发表于2008/9/30 14:19:00  291人阅读

 一个分页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
阅读全文
0 0

相关文章推荐

img
取 消
img