通用的可带查询条件的SQL语句的分页存储过程

来源:未知 责任编辑:责任编辑 发表时间:2015-09-17 09:42 点击:
通用的可带查询条件的SQL语句的分页存储过程
 
假设数据库中有张表,表名是UserName,字段分别是ID(int),Name(nvarchar),Age(int)。
 
如果不带查询条件存储过程是:
CREATE PROCEDURE [dbo].[UserName] 
    @pageIndex int, 
    @pageSize int 
AS   www.2cto.com  
    declare @min int; 
    declare @max int; 
    set @min=@pageSize*(@pageIndex-1)+1; 
    set @max=@pageSize*@pageIndex; 
    with myTable as(select ID,Name,Age,Row_Number() over (order by ID) as rownum from [UserName] ) 
    select ID,Name,Age from myTable where  rownum between @min and @max  
    RETURN
 
这个分页存储过程很不实用,并且表是固定的。
下面十二个万能分页存储过程,
 
CREATE PROCEDURE [dbo].[UP_GetRecordByPage] 
@tblName varchar(255), -- 表名 
@fldName varchar(255), -- 主键字段名 
@PageSize int , -- 页尺寸   www.2cto.com  
@PageIndex int , -- 页码 
@IsReCount bit, -- 返回记录总数, 非 0 值则返回 
@OrderType bit, -- 设置排序类型, 非 0 值则降序 
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where) 
AS 
declare @strSQL varchar(6000) -- 主语句 
declare @strTmp varchar(2000) -- 临时变量(查询条件过长时可能会出错,可修改100为1000) 
declare @strOrder varchar(400) -- 排序类型 
if @OrderType != 0 
    begin 
        set @strTmp = '<(select min' 
        set @strOrder = ' order by [' + @fldName +'] desc' 
    end 
else 
    begin 
        set @strTmp = '>(select max' 
        set @strOrder = ' order by [' + @fldName +'] asc' 
    end 
set @strSQL = 'select top ' + str(@PageSize) + ' * from [' 
    + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' 
    + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' 
    + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' 
    + @strOrder 
if @strWhere != '' 
    set @strSQL = 'select top ' + str(@PageSize) + ' * from [' 
    + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' 
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

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

豫ICP备11007008号-1