小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

分頁(yè)查詢

 aaie_ 2013-04-29

--分頁(yè)查詢數(shù)據(jù)

--調(diào)用 sp_ShowPageQ 'TFetchData','id',0,'*',200,2,'fetchdt > ''2008-10-22'''

CREATE    PROCEDURE   sp_ShowPageQ

    @strTable       varchar(50),   --表名

    @strColumn      varchar(50),   --按該列來(lái)進(jìn)行分頁(yè)

    --@intColType     int,           --@strColumn列的類型,0-數(shù)字類型,1-字符類型,2-日期時(shí)間類型

    @intOrder       int,           --排序,0-順序,1-倒序

    @strColumnlist  varchar(800),  --要查詢出的字段列表,*表示全部字段

    @intPageSize    int,           --每頁(yè)記錄數(shù)

    @intPageNum     int,           --指定頁(yè)

    @strWhere       varchar(800)   --查詢條件

    --@intRecordCount int,           --總記錄數(shù)

    --@intPageCount   int            --總頁(yè)數(shù) 

 

  AS

 

  DECLARE   @sql    nvarchar(4000) --用于構(gòu)造SQL語(yǔ)句

  DECLARE   @where1 varchar(800)   --構(gòu)造條件語(yǔ)句

  DECLARE   @where2 varchar(800)   --構(gòu)造條件語(yǔ)句

  DECLARE   @intRecordCount int    --總記錄數(shù)

  DECLARE   @intPageCount int      --總頁(yè)數(shù)

 

  IF   @strWhere   is   null   or   rtrim(@strWhere)=''

  -- 為了避免SQL關(guān)鍵字與字段、表名等連在一起,首先為傳入的變量添加空格

 

  BEGIN  --沒(méi)有查詢條件

      SET   @where1=' WHERE '  

      SET   @where2=' '  

  END  

  ELSE   

  BEGIN  --有查詢條件 

      SET   @where1=' WHERE  ('+@strWhere+')  AND  '

      SET   @where2=' WHERE  ('+@strWhere+')  '  

  END

 

 

  set @strColumn = ' ' + @strColumn + ' '

  set @strColumnlist = ' ' + @strColumnlist + ' '

 

  --構(gòu)造SQL語(yǔ)句,計(jì)算總頁(yè)數(shù)。計(jì)算公式為 總頁(yè)數(shù) = Ceiling ( 記錄個(gè)數(shù) / 頁(yè)大小 )

  SET   @sql='SELECT   @intPageCount=CEILING((COUNT(*)+0.0)/'

        + CAST(@intPageSize   AS   varchar)

        + ')   FROM   ' + @strTable + @where2

 

  --執(zhí)行SQL語(yǔ)句,計(jì)算總頁(yè)數(shù),并將其放入@intPageCount變量中

  EXEC sp_executesql  @sql,N'@intPageCount int OUTPUT',@intPageCount OUTPUT

 

 

  --計(jì)算記錄數(shù) @intRecordCount

  SET   @sql='SELECT   @intRecordCount=COUNT(*) FROM   ' + @strTable + @where2

  --執(zhí)行SQL語(yǔ)句,計(jì)算記錄數(shù),并將其放入@intRecordCount 變量中

 

  EXEC sp_executesql  @sql,N'@intRecordCount  int OUTPUT',@intRecordCount OUTPUT

 

 

  --將總頁(yè)數(shù)放到查詢返回記錄集的第一個(gè)字段前,此語(yǔ)句可省略

  SET  @strColumnlist= ' '+Cast(@intPageCount as varchar(30)) + ' as PageCount,'+

                        Cast(@intRecordCount as varchar(30)) + ' as RecordCount,' + @strColumnlist  

 

  IF   @intOrder=0   --構(gòu)造升序的SQL

 

      SET @sql='SELECT TOP '+ CAST(@intPageSize   AS   varchar)  +

               @strColumnlist +  

               ' FROM ' + @strTable + @where1 +

               @strColumn + '>(SELECT MAX('+@strColumn+')  '+  

               ' FROM (SELECT TOP '+ CAST(@intPageSize*(@intPageNum - 1)  AS  varchar) +  

               @strColumn + ' FROM '+ @strTable+@where2+'ORDER  BY '+@strColumn+')  t)  ORDER  BY '+ @strColumn  

 

  ELSE              --構(gòu)造降序的SQL

 

      SET @sql='SELECT TOP '+ CAST(@intPageSize   AS   varchar)  +

               @strColumnlist+  

               ' FROM '+ @strTable + @where1 +

               @strColumn + '<(SELECT   MIN('+@strColumn+')   '+  

               ' FROM (SELECT TOP '+ CAST(@intPageSize*(@intPageNum - 1)  AS  varchar) +  

               @strColumn + ' FROM '+ @strTable+@where2+'ORDER   BY '+@strColumn+'   DESC)   t)   ORDER   BY   '+  

               @strColumn + ' DESC'       

 

 

  IF   @intPageNum=1--第一頁(yè)

 

      SET   @sql='SELECT   TOP   '+CAST(@intPageSize   AS   varchar) + @strColumnlist + ' FROM '+@strTable+  

                 @where2+'ORDER   BY   '+@strColumn+CASE   @intOrder WHEN  0 THEN  ''  ELSE  '  DESC' 

 

 

  END  

  --PRINT   @sql  

 

  EXEC(@sql)  

 

 

 

 

GO

 

  CREATE  procedure PaginationQuery        

  @p_selectSQL   nvarchar(4000), --要執(zhí)行的sql語(yǔ)句  

  @p_curPage   int=1 out,   --要顯示的頁(yè)碼  

  @p_pageSize   int=20, --每頁(yè)的大小  

  @p_totalRecords   int=0   out, --記錄數(shù)  

  @p_totalPages   int=0   out --總頁(yè)數(shù)  

  as  

  set nocount on  

  declare  

     @p1 int,

     @tmpCur int  

 

  exec sp_cursoropen @p1 output,@p_selectSQL,@scrollopt=1,@ccopt=1,@rowcount=@p_totalPages output  

  if @p_curPage<1

    set @p_curPage=1

  if @p_curPage*@p_pageSize>@p_totalPages

    set @p_curPage=ceiling(1.0*@p_totalPages/@p_pageSize)

  select @tmpCur=@p_curPage

 

  select @p_totalRecords=@p_totalPages+1,@p_totalPages=ceiling(1.0*@p_totalPages/@p_pageSize),@p_curPage=(@p_curPage-1)*@p_pageSize+1      

  exec   sp_cursorfetch   @p1,16,@p_curPage,@p_pageSize    

  select @p_curPage=@tmpCur

  exec   sp_cursorclose   @p1  

  set nocount off

 

GO

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多