在做数据绑定时,我们常常会遇到分页事件,下面记录一下分页常用到SQL的两个存储过程

①/****分页数据总数****/
/****** 对象:  StoredProcedure [dbo].[GetRecordCount]

CREATE  PROCEDURE [dbo].[GetRecordCount]
 @tablename nvarchar(100),@column nvarchar(100), @wherestr nvarchar(1000)
AS
declare @execsql nvarchar(2000);
   if @wherestr=''
      begin
           set @execsql='select count('+@column+') as '+@column+' from '+@tablename;
      end
    else
       begin
    set @execsql='select count('+@column+') as '+@column+' from '+@tablename+' where '+@wherestr;
       end
   
    exec(@execsql);
②/***分页****/
/****** 对象:  StoredProcedure [dbo].[GetPageOfRecords]

--创建存储过程
CREATE  PROCEDURE [dbo].[GetPageOfRecords]
  @pageSize int = 20,                                                --分页大小
  @currentPage int ,                                                 --第几页
  @columns varchar(1000) = '*',                            --需要得到的字段
  @tableName varchar(100),                                     --需要查询的表   
  @condition varchar(1000) = '',                         --查询条件, 不用加where关键字
  @ascColumn varchar(100) = '',                            --排序的字段名 (即 order by column asc/desc)
  @bitOrderType bit = 0,                                         --排序的类型 (0为升序,1为降序)
  @pkColumn varchar(50) = ''                                 --主键名称
AS
BEGIN                                                                                    --存储过程开始
  DECLARE @strTemp varchar(300)
  DECLARE @strSql varchar(5000)                            --该存储过程最后执行的语句
  DECLARE @strOrderType varchar(1000)                --排序类型语句 (order by column asc或者order by column desc)
  BEGIN
    IF @bitOrderType = 1                --降序
      BEGIN
        SET @strOrderType = ' ORDER BY '+ @ascColumn+' DESC'
        --SET @strTemp = '<(SELECT min'
      END
    ELSE                  --升序
      BEGIN
        SET @strOrderType = ' ORDER BY '+ @ascColumn+' ASC'
        --SET @strTemp = '>(SELECT max'
      END
    IF @currentPage = 1            --第一页
      BEGIN
        IF @condition != ''
          SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+ @columns+' FROM '+ @tableName+
            ' WHERE '+ @condition+ @strOrderType
        ELSE
          SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+ @columns+' FROM '+ @tableName+@strOrderType
      END
    ELSE                  -- 其他页
      BEGIN
        IF @condition !=''
          SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+ @columns+' FROM '+ @tableName+
          ' WHERE '+ @condition+' AND '+ @pkColumn+ ' not in (SELECT TOP '+STR((@currentPage-1)*@pageSize)+
          ' '+ @pkColumn+' FROM '+ @tableName+' where '+ @condition+ @strOrderType+')'+ @strOrderType
        ELSE
          SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+ @columns+' FROM '+ @tableName+
          ' WHERE '+ @pkColumn+' not in (SELECT TOP '+STR((@currentPage-1)*@pageSize)+' '+ @pkColumn+
          ' FROM '+ @tableName+ @strOrderType+')'+ @strOrderType
      END
  END
--print @strSql;
  EXEC (@strSql)
END
根据存储过程需要的参数就可以直接调用这两个存储过程了

SQL分页常用的两个存储过程的更多相关文章

  1. SQL Server常用的几个存储过程

    1. sp_helptext 查看一些数据库对象的定义,比如存储过程.函数.试图等. 2. sp_who或者sp_who2 查看SQL Server数据库会话信息.比如是否被阻塞.

  2. sql server 常用的系统存储过程

      系统存储过程 说明 sp_databases 列出服务上的所有数据库 sp_helpdb 报告有关指定数据库或所有数据库的信息 sp_renamedb 更改数据库的名称 sp_tables 返回当 ...

  3. sql server 常用的扩展存储过程

    sql server 里面提供了丰富的系统存储过程来辅助我们管理数据库以及开发.今天分享介绍一些常用的数据库扩展存储过程 xp_cmdshell 这个大家都比较熟悉了,使用xp_cmdshell 可以 ...

  4. Sql Server 常用系统存储过程大全

    -- 来源于网络 -- 更详细的介结参考联机帮助文档 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_logi ...

  5. 真正通用的SQL分页存储过程

    关于SQL分页的问题,网上找到的一些SQL其实不能真正做到通用,他们主要是以自增长ID做为前提的.但在实际使用中,很多表不是自增长的,而且主键也不止一个字段,其实我们稍做改进就可以达到通用.这里还增加 ...

  6. [转]关于SQL分页存储过程的分析

    [转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用 ...

  7. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  8. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  9. 完整SQL分页存储过程(支持多表联接)

    http://www.cnblogs.com/andiki/archive/2009/03/24/1420289.html Code/********************************* ...

随机推荐

  1. Socket accept failed

    启动tomcat显示如下错误: java.net.SocketException: select failed at java.net.PlainSocketImpl.socketAccept(Nat ...

  2. python学习之——安装Beautifulsoup、requests、lxml

    安装Beautiful soup: 1.下载安装包,解压到python的安装目录: 2.cmd 进入安装包解压后的存放位置: 3.使用命令:python  setup.py build   , pyt ...

  3. 【随笔】从gitHub上获取源码

    有时候,需要从gitHub上获取源码,下面介绍几个方法: 1.获取链接: 打开gitHub代码库的页面,能在右边看到这个: 点击红圈里的标记,该链接就会复制下来. 然后,如果安装了小乌龟(Tortoi ...

  4. TCP/IP协议工作原理简述

    TCP/IP协议工作原理简述 // */ // ]]>   TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 ...

  5. advanced validation on purchase.

    安装模块 此模块在 标准功能的 2级审批基础上 增加 老板审批 增加 不同技术类和 非技术类的分支 核心审批工作流 如下图示 为审批用户 授予 purchase manager 权限 否则,看不到 审 ...

  6. WEB前端开发人员须知的常见浏览器兼容问题及解决技巧

    所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...

  7. Android 图片添加水印图片或者文字

    给图片添加水印的基本思路都是载入原图,添加文字或者载入水印图片,保存图片这三个部分 添加水印图片: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  8. 关于SharePoint 2010中不能使用AjaxControlToolkit的解决办法

    因为项目中有一个需求需要使用calendar控件,而且样式要和Reporting Service中的尽量一致,搜索了很久发现还是微软的AjaxControlToolkit提供的CalendarExte ...

  9. 结构化查询语言(SQL)数据类型

    简要描述一下结构化查询语言中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型. 字符型 VARCHARVS CHAR VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要.他们都是用 ...

  10. Java和Ibatis调用存储过程并取得返回值详解

    Java和Ibatis调用存储过程并取得返回值详解 2011-07-19 17:33 jiandanfeng2 CSDN博客 字号:T | T 本文主要介绍了Java和Ibatis调用存储过程的方法, ...