CREATEORREPLACEFUNCTION GetAreaCdStr(cmpyCd INvarchar2) RETURNVARCHAR2AS TYPE REFCURSOR IS REF CURSOR; AREA_COR REFCURSOR; areaCdStr VARCHAR2(500); areaCd VARCHAR2(3); BEGIN OPEN AREA_COR FOR SELECTDISTINCT AREA_CD FROM T_AREA_M WHERE CMPY_CD = cmpyCd ORDERBY AREA_CD; LOOP FETCH AREA_COR INTO areaCd; EXITWHEN AREA_COR%NOTFOUND; BEGIN areaCdStr := areaCdStr || areaCd ||','; END; END LOOP; CLOSE AREA_COR; RETURN areaCdStr; END;
調(diào)用:
SELECT T.CMPY_CD, T.CMPY_NM, GETAREACDSTR(T.CMPY_CD) AS AREACDSTR FROM T_CMPY_M T ORDERBY T.CMPY_CD