PLSQL实现分页查询

  PROCEDURE SHOWLIST(PAGESIZE in integer,
                     PAGENOW  in integer,
                     KEYWORD  varchar2,
                     
                     ROWCOUNT_ out integer,
                     PAGECOUNT out integer,
                     P_RESULT  OUT PLAT_CONSTANT.RESULTSET)
  
   IS
    EXESQL VARCHAR2(1000);
    DOWN   INTEGER := (PAGENOW - 1) * PAGESIZE + 1;
    TOP    INTEGER := PAGENOW * PAGESIZE;
    HOW    VARCHAR2(100);
  BEGIN
  
    HOW := '1=1';
  
    IF KEYWORD IS NOT NULL AND KEYWORD <> '-1' THEN
      HOW := ' NAME LIKE ''%' || KEYWORD || '%'' ';
    END IF;
  
    EXESQL := ' SELECT * FROM 
                       (SELECT  A.* ,ROWNUM RN  FROM 
                                (SELECT ID , NAME , REMARK  FROM  EX_SYS_ROLE WHERE YXBZ=1 AND ' || HOW ||
              '  ) A      
                       WHERE ROWNUM <= ' || TOP || ' ) 
                WHERE RN >= ' || DOWN || '';
  
    --把游标和sql语句关联
    OPEN P_RESULT FOR EXESQL;
  
    --计算 rowCount_ 和 pageCount
  
    EXESQL := 'SELECT COUNT(*) FROM  EX_SYS_ROLE  WHERE YXBZ=1 AND ' || HOW;
  
    --执行并赋值
    EXECUTE IMMEDIATE EXESQL
      INTO ROWCOUNT_;
  
    --计算pageCount
    IF MOD(ROWCOUNT_, PAGESIZE) = 0 THEN
      PAGECOUNT := ROWCOUNT_ / PAGESIZE;
    ELSE
      PAGECOUNT := trunc(ROWCOUNT_ / PAGESIZE) + 1;
    END IF;
  END;

 

转载于:https://www.cnblogs.com/jyyjava/p/5009244.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值