博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页存储过程
阅读量:6252 次
发布时间:2019-06-22

本文共 3956 字,大约阅读时间需要 13 分钟。

View Code
------------------------------------ --用途:支持任意排序的分页存储过程  --说明: ------------------------------------  CREATE PROCEDURE [dbo].[UP_GetRecordByPageOrder]  @tblName varchar(255),   -- 表名  @fldName varchar(255),   -- 显示字段名  @OrderfldName varchar(255), -- 排序字段名  @StatfldName varchar(255), -- 统计字段名  @PageSize int = 10,   -- 页尺寸  @PageIndex int = 1,   -- 页码  @IsReCount bit = 0,   -- 返回记录总数, 非 0 值则返回  @OrderType bit = 0,   -- 设置排序类型, 非 0 值则降序  @strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)  AS  declare @strSQL varchar(6000) -- 主语句  declare @strTmp varchar(100)   -- 临时变量(查询条件过长时可能会出错,可修改100为1000) declare @strOrder varchar(400) -- 排序类型  if @OrderType != 0  begin  set @strTmp = '<(select min'  set @strOrder = ' order by [' + @OrderfldName +'] desc'  end  else  begin  set @strTmp = '>(select max'  set @strOrder = ' order by [' + @OrderfldName +'] asc'  end  set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['  + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '(['  + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['  + @OrderfldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'  + @strOrder  if @strWhere != ''  set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['  + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '(['  + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['  + @OrderfldName + '] from [' + @tblName + '] where ' + @strWhere + ' '  + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder  if @PageIndex = 1  begin  set @strTmp = ''  if @strWhere != ''  set @strTmp = ' where ' + @strWhere  set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['  + @tblName + ']' + @strTmp + ' ' + @strOrder  end   if @IsReCount != 0  set @strSQL = @strSQL+' select count(1) as Total from [' + @tblName + ']'  if @strWhere!='' set @strSQL = @strSQL+' where ' + @strWhere exec (@strSQL)      ------------------------------------ --用途:分页存储过程(对有主键的表效率极高)  --说明: ------------------------------------  CREATE PROCEDURE [dbo].[UP_GetRecordByPage]     @tblName      varchar(255),       -- 表名     @fldName      varchar(255),       -- 主键字段名     @PageSize     int = 10,           -- 页尺寸     @PageIndex    int = 1,            -- 页码     @IsReCount    bit = 0,            -- 返回记录总数, 非 0 值则返回     @OrderType    bit = 0,            -- 设置排序类型, 非 0 值则降序     @strWhere     varchar(1000) = '' -- 查询条件 (注意: 不要加 where) AS  declare @strSQL   varchar(6000)       -- 主语句 declare @strTmp   varchar(100)        -- 临时变量(查询条件过长时可能会出错,可修改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 + '(['         + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['         + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '         + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder  if @PageIndex = 1 begin     set @strTmp =''     if @strWhere != ''         set @strTmp = ' where ' + @strWhere      set @strSQL = 'select top ' + str(@PageSize) + ' * from ['         + @tblName + ']' + @strTmp + ' ' + @strOrder end  if @IsReCount != 0     set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere  exec (@strSQL)

 

转载于:https://www.cnblogs.com/TNSSTAR/archive/2012/08/24/2653865.html

你可能感兴趣的文章
JSON的学习理解
查看>>
经典SQL语句大全
查看>>
升级fedora 18到fedora 19
查看>>
Dictionary和数组查找效率对比
查看>>
alias命令详情
查看>>
自定义异步加载资源插件
查看>>
easyui combobox两种不同的数据加载方式
查看>>
Smarty配置与实例化
查看>>
***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...
查看>>
Siege——多线程编程最佳实例
查看>>
c# 生成 验证码
查看>>
SQL Server 触发器
查看>>
何为SLAM
查看>>
[工具]infolite-chrome插件css插件
查看>>
javascript 深拷贝
查看>>
【代码小记】无
查看>>
【知识点】Java机密
查看>>
BarTender 2016表单中的“秤显示”控件
查看>>
全面理解javascript的caller,callee,call,apply概念[转载]
查看>>
Jquery 下拉框取值
查看>>