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;