日期:2014-05-17  浏览次数:21126 次

帮忙看看我这个存储过程有什么问题?
CREATE   OR   REPLACE   PROCEDURE   PROC_PageDivider
(PERROWS   NUMBER:=4,DISPLAYPAGE   NUMBER:=1)
                                                                    --TABLENAME要分页的表名
                                                                    --PERROWS每页显示的行数
                                                                    --DISPLAYPAGE要显示的页码
IS
              SQL_SELECT   VARCHAR2(200);                                         --查询语句
              PAGESIZE   NUMBER;                                                           --页数
              TOTALROWS   NUMBER;                                                         --总共行数
BEGIN
              SELECT   COUNT(*)   INTO   TOTALROWS   FROM   STUDENT;       --要用动态SQL
              IF   TOTALROWS%PERROWS   <> 0   THEN
                    PAGESIZE:=TOTALROWS/PERROWS+1;
              ELSE
                    PAGESIZE:=TOTALROWS/PERROWS;
              END   IF;
              SELECT   *   FROM   STUDENT   WHERE   ID <=(DISPLAYPAGE-1)*PERROWS
              MINUS
              SELECT   *   FROM   STUDENT   WHERE   ID <=DISPLAYPAGE*PERROWS;
END;

我这样执行怎么会有错:
EXCUTE   IMMEDIATE   PROC_PageDivider   5,2

------解决方案--------------------
oracle存储过程中不允许直接用单纯的select语句的,你需要先定义一个指示游标
------解决方案--------------------
不明白什么意思,帮顶了
------解决方案--------------------
http://www.xh668.com/bbs/thread-4873-1-1.html