myfunction是我自定义的一个函数,返回的是table类型的结果集create or replace
FUNCTION FN_SQGL_GETJTZS(P_DEP_ID in varchar2, P_LEVEL in number,JDSJMIN IN VARCHAR2,JDSJMAX VARCHAR2)
  RETURN TYPE_SQGL_GETJTZS_TABLE PIPELINED
AS
  PRAGMA AUTONOMOUS_TRANSACTION;
  TYPE CR IS REF CURSOR;
  CR_RS CR;
  OUT_RS TYPE_SQGL_GETJTZS := TYPE_SQGL_GETJTZS(NULL,NULL,NULL,NULL,NULL,NULL,NULL);
BEGIN
  --调用存储过程
  PRO_SQGL_GETJTZS(P_DEP_ID,P_LEVEL,JDSJMIN,JDSJMAX);--存储过程执行完之后数据保存到临时表TEMP_PRO_SQGL_GETJTZS_RS中  --打开动态游标
    OPEN CR_RS FOR 'SELECT DEP_ID,DEP_NAME,NVL(I_ZS,0),NVL(I_ZXHS,0),NVL(I_ZRS,0),NVL(I_ZXRS,0),CNAME FROM TEMP_PRO_SQGL_GETJTZS_RS';
  --把游标中的数据放到OUT_RS中
  LOOP   
      FETCH CR_RS INTO
        --OUT_RS;
        OUT_RS.DEP_ID,OUT_RS.DEP_NAME,OUT_RS.I_ZS,OUT_RS.I_ZXHS,OUT_RS.I_ZRS,OUT_RS.I_ZXRS,OUT_RS.CNAME;   
      EXIT WHEN CR_RS%NOTFOUND;
      --用来返回该集合的单个元素
      PIPE ROW(OUT_RS);--必须   
    END LOOP;   
    CLOSE CR_RS; 
    COMMIT;--必须
    return;    
END;