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;
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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货