SQLServer分页查询通用存储过程

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 11:54 点击:

 

自开始做项目以来,一直在用。这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用。

 

<span style="font-size:16px;">CREATE PROCEDURE prcPageResult 

-- 获得某一页的数据-- 

@currPage int = 1,                         --当前页页码(即Top currPage) 

@showColumn varchar(2000) = '*',           --需要得到的字段(即column1,column2,......) 

@tabName varchar(2000),                    --需要查看的表名(即from table_name) 

@strCondition varchar(2000) = '',          --查询条件(即where condition......) 不用加where关键字 

@ascColumn varchar(100) = '',              --排序的字段名(即order by column asc/desc) 

@bitOrderType bit = 0,                     --排序的类型(0为升序,1为降序) 

@pkColumn varchar(50) = '',                --主键名称 

@pageSize int = 20                         --分页大小 

 

AS 

BEGIN -- 存储过程开始 

-- 该存储过程需要用到的几个变量-- 

DECLARE @strTemp varchar(1000) 

DECLARE @strSql varchar(4000)              --该存储过程最后执行的语句 

DECLARE @strOrderType varchar(1000)        --排序类型语句(order by column asc或者order by column desc) 

 

BEGIN 

IF @bitOrderType = 1   -- 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 @currPage = 1    -- 如果是第一页 

BEGIN 

    IF @strCondition != '' 

        SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+ 

            ' WHERE '+@strCondition+@strOrderType 

    ELSE 

        SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+@strOrderType 

END 

 

ELSE    -- 其他页 

BEGIN 

    IF @strCondition !='' 

        SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+ 

        ' WHERE '+@strCondition+' AND '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+ 

        ' '+@pkColumn+' FROM '+

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • SQL小技巧系列 --- 行转列合并
      • sql server 列转行
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1