zoukankan      html  css  js  c++  java
  • 高性能分页级存储过程上亿分页存储过程,原创,sqlserver2005

    alter PROCEDURE Pages
    @TableNames VARCHAR(200),     --表名,可以是多个表,但不能用别名
    @PrimaryKey VARCHAR(100),     --主键,可以为空,但@Order为空时该值不能为空
    @Fields     VARCHAR(800),         --要取出的字段,可以是多个表的字段,可以为空,为空表示select *
    @PageSize INT,             --每页记录数
    @CurrentPage INT,         --当前页,0表示第1页
    @Filter VARCHAR(200) = '',     --条件,可以为空,不用填 where
    @Order VARCHAR(200) = '' ,    --排序,可以为空,为空默认按主键升序排列,不用填 order by
    @ResultCount varchar(24)-------显示的结果总数
    AS
    BEGIN
    declare @topRow varchar(12)
    declare @tempPageSize varchar(12)
    if(len(@Order)>0)
    begin
    set @Order=' order by '+@Order
    end
    else
    begin
    set @Order=' order by '+@PrimaryKey
    end
    if (len(@Filter)<1)
    begin
    set @Filter=' 1=1'
    end
    if(@CurrentPage-1<=0)
    set @CurrentPage=0
    if(len(rtrim(ltrim(@ResultCount)))>0)
    set @ResultCount='set rowcount '+ltrim(rtrim(@ResultCount))
    set @topRow= rtrim(ltrim(str(@PageSize*(@CurrentPage-1))))
    set @tempPageSize= rtrim(ltrim(str(@PageSize)))
    exec('SET NOCOUNT ON '+'
    '+@ResultCount+'
    set rowcount '+@tempPageSize+'
    select * from (select row_number() over ('+@Order+') rownumber,'+@Fields+' from '+@TableNames+' where '+@Filter+') tempTable where rownumber>'+@topRow+'
    set rowcount 0')
    end
  • 相关阅读:
    linux 图形界面形式和命令行形式
    linux 配置 jdk7
    StackOverflowError
    一次失败的svchost hacking
    VB调用API的学习
    植物打僵尸休闲花园外挂代码
    中文日文翻译工具
    vb跨域访问,获得特定的frame进行处理
    HTML对象库简介(Microsoft HTML Object Library > mshtml.tlb)
    用正则分析一段vb代码含有哪些过程或者函数
  • 原文地址:https://www.cnblogs.com/bestsaler/p/1835800.html
Copyright © 2011-2022 走看看