zoukankan      html  css  js  c++  java
  • sql存储过程分页 狼

    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,         --每页记录数
      @CurrentPage       
    int,         --指定页
      @Where  varchar(
    800),--查询条件
      @PageCount      
    int OUTPUT   --总页数
      
    AS

    DECLARE @sql nvarchar(
    4000),@where1 varchar(800),@where2 varchar(800)
    IF @Where 
    is null or rtrim(@Where)=''
    BEGIN
    --没有查询条件
      SET @where1
    =' WHERE '
      SET @where2
    ='  '
    END
    ELSE
    BEGIN
    --有查询条件
      SET @where1
    =' WHERE ('+@Where+') AND '--本来有条件再加上此条件
      SET @where2
    =' WHERE ('+@Where+''--原本没有条件而加上此条件
    END
    SET @sql
    ='SELECT @PageCount=CEILING((COUNT(*)+0.0)/'+CAST(@pagesize AS varchar)+
             
    ') FROM '+@tb+@where2
    EXEC sp_executesql @sql,N
    '@PageCount int OUTPUT',@PageCount 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*(@CurrentPage-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*(@CurrentPage-1) AS varchar)+' '+
               @col
    +' FROM '+@tb+@where2+'ORDER BY '+@col+' DESC) t) ORDER BY '+
               @col
    +' DESC'
    IF @CurrentPage
    =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

    GRANT EXEC ON sp_page TO PUBLIC

    GO
  • 相关阅读:
    centos通过yum安装php
    CentOS6 用yum安装mysql详解,简单实用
    启用CentOS6.5 64位安装时自带的MySQL数据库服务器
    Python三方库:Pandas(数据分析)
    Python三方库:Numpy(数组处理)
    Java笔记:反射,注解
    Java笔记:多线程
    Java笔记:IO流
    Java笔记:集合
    Java笔记:数组,异常,泛型
  • 原文地址:https://www.cnblogs.com/gowhy/p/2105063.html
Copyright © 2011-2022 走看看