贴个带分页的存储过程以备使用

来源:互联网 发布:软件物理架构 编辑:程序博客网 时间:2024/06/07 17:12

 --用户帖子表
  PROCEDURE get_topic_list(userIdS   IN VARCHAR2,
                           pageSize  IN INTEGER,
                           pageNum   IN INTEGER,
                           total     OUT INTEGER,
                           totalPage OUT INTEGER,
                           mycursor  OUT SYS_REFCURSOR) IS
    minNum       INTEGER;
    maxNum       INTEGER;
    tem_pageSize INTEGER;
    tem_pageNum  INTEGER;
  BEGIN
    SELECT decode(pageSize, 0, 10, pageSize),
           decode(pageNum, 0, 1, pageNum)
      INTO tem_pageSize, tem_pageNum
      FROM dual;
    SELECT COUNT(*)
      INTO total
      FROM (SELECT T.TITLE, rownum RN
              FROM bbscs_forum t
             WHERE t.userid = userIdS
               AND t.parentid IS NULL);
    SELECT ceil(total / tem_pageSize) INTO totalPage FROM dual;
    minNum := (tem_pageNum - 1) * tem_pageSize;
    maxNum := minNum + tem_pageSize;
    OPEN mycursor FOR
      SELECT *
        FROM (SELECT T.Id idS,
                     t.title nameS,
                     t.click,
                     t.boardid,
                     t.posttime times,
                     rownum RN,
                     '' toUserNameS,
                     '' ToUserIdS,
                     '' ResonS,
                     '' ContentS,
                     '' FromUserIdS,
                     '' FromUserNameS
                FROM bbscs_forum t
               WHERE t.userid = userIdS
                 AND t.parentid IS NULL
               ORDER BY t.posttime DESC)
       WHERE rn > minNum
         AND rn <= maxNum;
  END get_topic_list;

原创粉丝点击