怎么返回select数据集
declare num number;
begin  
    select 1 into num from d_user where userid=123456;
    if num>0 then
        select * from f_mediadownload where userid=123456;
    end if;
end;

解决方案 »

  1.   

    SQL server可以直接返回结果集,在Oracle要用游标
      

  2.   

    给你一个例子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;
    /
      

  3.   

    用游标返回多个结果集。或者into返回多个参数的结果集