CREATE OR REPLACE PROCEDURE PAGEDDATA
(
STARTINDEX  IN NUMBER,
ENDINDEX IN NUMBER
)
IS
BEGIN
SELECT  * FROM (SELECT ROWNUM R ,T1.* FROM TABLEB T1 WHERE ROWNUM<STARTINDEX+ENDINDEX) T2 WHERE T2.R>=STARTINDEX;
END PAGEDDATA;
/总是提示编译有错,就是一个实现分页的存储过程,怎么回事?

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE PAGEDDATA
    (
    STARTINDEX  IN NUMBER,
    ENDINDEX IN NUMBER,
    cur out sys_refcursor
    )
    IS
    BEGIN
    open cur for
    SELECT  * FROM (SELECT ROWNUM R ,T1.* FROM TABLEB T1 WHERE ROWNUM<STARTINDEX+ENDINDEX) T2 WHERE T2.R>=STARTINDEX;
    END PAGEDDATA;不能在过程中单纯地运行查询语句
    可以用游标将结果集输出
      

  2.   

    如果想在存储过程里输出的话
    可以把用SELECT检索的回的记录保存到一个记录类型变量中
    再使用DBMS_OUTPUT.PUT_LINE()函数进行输出
      

  3.   

    Oracle中怎么这么麻烦,比Sql server的存储过程麻烦多了,在Sql Server中,如果返回记录,直接这样写就可以了,为什么Oracle中还要一个游标呢?
      

  4.   

    看到你的语句感觉怪怪的,怎么都没有输出呢,这相当于是什么事情都没做,在存储过程中是不能用select语句的,应该用select into语句代替的,into后面就是输出的。1楼 2楼的方法都可以,但是from后面的table是多余的吧