zoukankan      html  css  js  c++  java
  • Oracle通用大数据量存储过程分页修正版

    在网络上流行的“Oracle通用大数据量存储过程分页”代码在本地使用过程中发现有点不适合项目需求,所以抽时间修正了下,具体的不完善的地方表现为:

    1、在第一页搜索的时候可以正常搜索出信息,但是如果跳转到地2页以后的分页上再搜索的时候就会出现找不到记录;

    2、在比较大的的分页上搜索出多条记录时,如果搜索出来的记录的总页数比当前页码小,也不显示记录,因为搜索出的总记录的总页数比当前页数小;

    下面修正版的分页存储过程修正了上面的错误,在此记录下,便于以后备用。

    create or replace package body Pager is
    procedure sp_Page
      (
        p_PageSize int,
        p_PageNo int,
        p_SqlSelect varchar2,
        p_SqlCount varchar2,
        p_OutRecordCount out int,
        p_OutCursor out refCursorType
      )
    as
        v_sql varchar2(3000); 
        v_count int;           --总记录数
        v_totalpage int;     --总页数
        v_curpage int;       --当前页码
        v_heiRownum int;
        v_lowRownum int;
      begin
        execute immediate p_SqlCount into v_count;
        p_OutRecordCount := v_count;
        v_curpage := p_PageNo;
       
        v_totalpage := floor(v_count / p_PageSize);
        if mod(v_count,p_PageSize) != 0 then
           v_totalpage := v_totalpage + 1;
        end if;
       
        if v_totalpage <= 0 then
           v_totalpage := 1;
        end if;

        if v_totalpage < p_PageNo then
           v_curpage := v_totalpage;
        end if;
       
        v_heiRownum := v_curpage * p_PageSize;
        v_lowRownum := v_heiRownum - p_PageSize + 1;
       
        dbms_output.put_line(v_curpage);
                       
        v_sql := 'SELECT *
                  FROM (
                         SELECT A.*, rownum rn
                         FROM ('|| p_SqlSelect ||') A
                         WHERE rownum <= '|| to_char(v_heiRownum) || '
                       ) B
                  WHERE rn >= ' || to_char(v_lowRownum);
       
        OPEN p_OutCursor FOR v_sql;
      end sp_Page;
    end Pager;

  • 相关阅读:
    面向对象编程技术的总结和理解(c++)
    对类的理解(c++)
    对指针和引用的理解(c++)
    3DES对称加密算法(ABAP 语言实现版)
    org.springframework.util.Base64Utils线程安全问题
    SAP传输请求自动发布
    ABAP WB01 BDC ”No batch input data for screen & &“ ”没有屏幕 & & 的批输入数据“
    SAP S/4 1610 IDES + HANA 2.0 安装
    ABAP语言实现 左移 <<、无符号右移 >>> 位移操作
    ABAP表抛FTP通用程序
  • 原文地址:https://www.cnblogs.com/xiaojinhe2/p/2289892.html
Copyright © 2011-2022 走看看