分页一般语法如下: CREATE OR REPLACE FUNCTION GG(S INT, E INT) RETURN SYS_REFCURSOR AS R_C SYS_REFCURSOR; BEGIN OPEN R_C FOR 'SELECT ename,empno FROM SCOTT.EMP WHERE ROWID IN (SELECT RID FROM (SELECT ROWNUM RNO, ROWID RID FROM (SELECT ROWID FROM SCOTT.EMP ORDER BY ENAME) WHERE ROWNUM <= :E) WHERE RNO >= :S)' USING E, S; RETURN R_C; END; /DECLARE r_c SYS_REFCURSOR; v_c1 VARCHAR2(10); v_c2 VARCHAR2(10); BEGIN r_c:=gg(2,6); LOOP FETCH r_c INTO v_c1,v_c2; EXIT WHEN r_c%NOTFOUND; dbms_output.put_Line(v_c1||'-'||v_c2); END LOOP; CLOSE r_c; END; /
CREATE OR REPLACE FUNCTION GG(S INT, E INT) RETURN SYS_REFCURSOR AS
R_C SYS_REFCURSOR;
BEGIN
OPEN R_C FOR 'SELECT ename,empno
FROM SCOTT.EMP
WHERE ROWID IN (SELECT RID
FROM (SELECT ROWNUM RNO, ROWID RID
FROM (SELECT ROWID
FROM SCOTT.EMP
ORDER BY ENAME)
WHERE ROWNUM <= :E)
WHERE RNO >= :S)'
USING E, S;
RETURN R_C;
END;
/DECLARE
r_c SYS_REFCURSOR;
v_c1 VARCHAR2(10);
v_c2 VARCHAR2(10);
BEGIN
r_c:=gg(2,6);
LOOP
FETCH r_c INTO v_c1,v_c2;
EXIT WHEN r_c%NOTFOUND;
dbms_output.put_Line(v_c1||'-'||v_c2);
END LOOP;
CLOSE r_c;
END;
/
不错,使用jdbc就可以这样
hibernate就更简便了