zoukankan      html  css  js  c++  java
  • SQL SERVER的分页存储过程

    CREATE PROCEDURE sp_page
     @tb varchar(50), --表名
     @col varchar(50), --按该列来进行分页
     @coltype int, --@col列的类型,0-数字类型,1-字符类型,2-日期时间类型
     @orderby bit, --排序,0-顺序,1-倒序
     @collist varchar(800),--要查询出的字段列表,*表示全部字段
     @pagesize int, --每页记录数
     @page int, --指定页
     @condition varchar(800),--查询条件
     @pages int OUTPUT --总页数
    AS
    /*
    功能描述:对指定表中满足条件的记录按指定列进行分页查询,分页可以顺序、倒序
    查询可以指定页大小、指定查询任意页、指定输出字段列表,返回总页数
    作 者:pbsql
    版 本:1.10
    最后修改:2004-11-29
    */
    DECLARE @sql nvarchar(4000),@where1 varchar(800),@where2 varchar(800)
    IF @condition is null or rtrim(@condition)=''
    BEGIN--没有查询条件
     SET @where1=' WHERE '
     SET @where2=' '
    END
    ELSE
    BEGIN--有查询条件
     SET @where1=' WHERE ('+@condition+') AND '--本来有条件再加上此条件
     SET @where2=' WHERE ('+@condition+') '--原本没有条件而加上此条件
    END
    SET @sql='SELECT @pages=CEILING((COUNT(*)+0.0)/'+CAST(@pagesize AS varchar)+
    ') FROM '+@tb+@where2
    EXEC sp_executesql @sql,N'@pages int OUTPUT',@pages OUTPUT--计算总页数
    IF @orderby=0
     SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
      ' FROM '+@tb+@where1+@col+'>(SELECT MAX('+@col+') '+
      ' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
    @col+' FROM '+@tb+@where2+'ORDER BY '+@col+') t) ORDER BY '+@col
    ELSE
     SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
      ' FROM '+@tb+@where1+@col+'<(SELECT MIN('+@col+') '+
      ' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
      @col+' FROM '+@tb+@where2+'ORDER BY '+@col+' DESC) t) ORDER BY '+
      @col+' DESC'
    IF @page=1--第一页
     SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+' FROM '+@tb+
      @where2+'ORDER BY '+@col+CASE @orderby WHEN 0 THEN '' ELSE ' DESC' END
    EXEC(@sql)
    GO

    /*使用实例

    declare @page as int
    exec sp_page 'Categories','CategoryID',0,0,'*',2,2,'',@page

    */

  • 相关阅读:
    第二阶段冲刺记录八
    用户体验评价
    找水王
    第二阶段冲刺记录七
    第二阶段冲刺记录六
    第14周学习进度
    第二阶段冲刺记录五
    第二阶段冲刺记录四
    第一阶段意见评论
    IP协议号大全
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035730.html
Copyright © 2011-2022 走看看