在做数据绑定时,我们常常会遇到分页事件,下面记录一下分页常用到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. 在iis中设置文件下载而不是在浏览器上打开

    点击网页链接的*.txt,*.jpg,*.xml等文件时会在浏览器上直接显示,并没有像*.doc那样弹出下载提示框. 解决方法: 在部署的网站上,选择存放文件的目录,选择 HTTP响应标头 ,添加一个 ...

  2. position:absolute绝对定位解读

    position:absolute绝对定位解读  摘要   用四段代码解释absolute的定位问题,进而从概念的角度切实解决html布局问题. 一.背景 常常遇到这样一些问题,很容易混淆.“浏览器屏 ...

  3. XmlDocument解析Soap格式文件案例:

    private static string Analysis(string strResult) { var doc = new System.Xml.XmlDocument(); //加载soap文 ...

  4. C#对于文件操作

    //C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); ...

  5. 自定义刻度的SeekBar

    <com.imibaby.client.views.CustomSeekbar android:id="@+id/myCustomSeekBar" android:layou ...

  6. JavaScrip之对象与继承

    这章主要学习对象.原型.原型链和继承,比较核心,所以单独整理这一章的内容. 理解对象:一组名值对,值可以是数据或函数. 属性类型:1数据属性:包含一个数据值的位置.在这个位置可以读取和写入值,4个描述 ...

  7. Unity 之 Shader 对Z深度的偏移

    对Z深度的偏移 Offset 指令给了我们一个操作正常的ZTest 检测结果的手段. Offset有两个参数,这两个参数理解起来不是很直观,而且具体实现是和硬件相关的 下面在实际例子中看他的效果 Sh ...

  8. 记一次TFS 的 垃圾提示(无法下载 未获取项目 的 代码)

    提示 “ 所有文件都是最新的 ”,但是在 源码管理 里面 确是 “未下载” 我艹,第一次遇到.如图.~~ 最后发现是 TFS 的项目权限设置问题. 你妈个马批的,啥子鸡巴破B提示,太阳你妈B 的 .要 ...

  9. Java 压缩字符串

    1.引言 最近在做项目中,平台提供一个http服务给其他系统调用,然后我接收到其他系统的json格式的报文后去解析,然后用拿到的数据去调用corba服务,我再把corba的返回值封装完成json字符串 ...

  10. Ubuntu 试用Android L版本

    Android L是最近google一个大更新的版本,目前google开发了android L的开发者预览版本,对于一个android 开发者来说很定是要下载下来体验一把,顺便也要了解一下Androi ...