给你一个例子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 (SELECT ename,empno, ROW_NUMBER() OVER(ORDER BY ENAME) RN FROM SCOTT.EMP T) WHERE RN >= S AND RN <= E; 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; /
小妹表达的不好
小妹的意思是,比如现在有两个表,一个用户表,主键是用户ID。另一个是信息表。
现在远程传送给我一个用户ID,我要将与这个ID有关的所有信息以视图的方式输出,还请大侠指教。
另外,小妹是在LINUX下编程,之前用游标的形式将查询到的结果一条一条的插到文件中,可是这种方法不适用于大量数据,所以想用视图的方式将数据输出,
还请大侠指教,谢谢
r_c SYS_REFCURSOR;
BEGIN
OPEN r_c FOR
SELECT ename,empno
FROM (SELECT ename,empno, ROW_NUMBER() OVER(ORDER BY ENAME) RN FROM SCOTT.EMP T)
WHERE RN >= S
AND RN <= E;
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;
/