Sql 分页存储过程

来源:互联网 发布:去香港用什么网络 编辑:程序博客网 时间:2024/06/08 14:31
 

下面把这个存储过程收录下来,提供大家学习:


CREATE PROCEDURE GetRecordFromPage
     @tblName       varchar(255),        -- 表名
     @fldName       varchar(255),        -- 字段名 这里测试了一下,只能一个字段,
     @PageSize      int = 10,            -- 第页多少条
     @PageIndex     int = 1,             -- 当前显示页
     @OrderType     bit = 0,             -- 设置排序类型, 非 0 值则降序
     @strWhere      varchar(2000) =''   -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL    varchar(6000)        -- 主语句
declare @strTmp    varchar(1000)        -- 临时变量

declare @strOrder varchar(500)         -- 排序类型
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
exec (@strSQL)
GO
 

调用方式如:

exec GetRecordFromPage 'info','info_id',20,350,1,' type=''供应'''

此方法在我40万数据库里测试速度很不错。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 已经将退货寄回店家硬说没有怎么办 微信申诉账号短信验证失败怎么办 京东账号换手机号收不到短信怎么办 我的手机收不到短信通知怎么办? 淘宝卖家发货物流单号写错了怎么办 商铺买东西不给调换大小怎么办 圆通快递物流信息一直没更新怎么办 中通快递三天没更新物流信息怎么办 快递已经到了物流信息不更新怎么办 天天快递查询不更新物流信息怎么办 买车下个月分期全部付清怎么办手续 天猫客服介入以后商家不退款怎么办 淘宝上买代购奢侈品买到假货怎么办 淘宝退货卖家收到货拒绝退款怎么办 没收到货但申请了退货退款怎么办 小米商城预约中德手机没货怎么办 电脑用百度网盘下载速度超慢怎么办 ios网盘下载速度太慢怎么办 小米手机4x卡机了怎么办 小米手机4x屏幕点不动了怎么办 苹果手机连接u盘没反应怎么办 苹果官网储蓄卡分期额度不够怎么办 京东买东西发票信息填写错了怎么办 华为v9手机激活密码忘了怎么办 公司报销发票纸质的丢了怎么办 在京东上买的小天才手表坏了怎么办 美亚买东西过几天降价了怎么办 天猫买东西退款后又不想退了怎么办 自己写错了地址快递被签收了怎么办 在天猫购买东西不发货怎么办 在天猫买了东西不给我发货怎么办 天猫退货卖家收到货不退款怎么办 唯品会的账号找不回来了怎么办 从网上买的沙发物流超级慢怎么办 三星c5手机玩王者荣耀卡怎么办 买手机送话费的卡不想用了怎么办 到银行存钱被骗买保险了怎么办 去银行存钱被骗买了保险怎么办 京东申请退款后卖家又发货了怎么办 苹果6s没有4g网怎么办 花呗分期付款买手机额度不够怎么办