--注意:需要先创建返回的表类型
create or replace type DEPT_TREE_TB as object
(
DEPT_ID NUMBER(19),
DEPT_NAME varchar2(254)
);
create or replace type DEPT_TREE_OBJ is table of DEPT_TREE_TB;
CREATE OR REPLACE FUNCTION "SZAPP"."F_SM_GET_DEPT_BY_PLACE"(P_EMPLOYEE_ID NUMBER,P_DEPT_ID NUMBER)
RETURN DEPT_TREE_OBJ PIPELINED
AS
DEPT_TREE DEPT_TREE_TB;
BEGIN
FOR MYROW IN (SELECT ROW_ID DEPT_ID,DEPT_NAME FROM MD_DEPT WHERE ROW_ID IN
(
SELECT DEPT_ID FROM MD_DEPT_PLACES WHERE ROW_ID IN (SELECT PLACE_ID FROM MD_EMP_PLACES WHERE EMPLOYEE_ID= P_EMPLOYEE_ID)
)
)
LOOP
DEPT_TREE := DEPT_TREE_TB(MYROW.DEPT_ID, MYROW.DEPT_NAME);
PIPE ROW(DEPT_TREE);
END LOOP;
RETURN;
END;
create or replace type DEPT_TREE_TB as object
(
DEPT_ID NUMBER(19),
DEPT_NAME varchar2(254)
);
create or replace type DEPT_TREE_OBJ is table of DEPT_TREE_TB;
CREATE OR REPLACE FUNCTION "SZAPP"."F_SM_GET_DEPT_BY_PLACE"(P_EMPLOYEE_ID NUMBER,P_DEPT_ID NUMBER)
RETURN DEPT_TREE_OBJ PIPELINED
AS
DEPT_TREE DEPT_TREE_TB;
BEGIN
FOR MYROW IN (SELECT ROW_ID DEPT_ID,DEPT_NAME FROM MD_DEPT WHERE ROW_ID IN
(
SELECT DEPT_ID FROM MD_DEPT_PLACES WHERE ROW_ID IN (SELECT PLACE_ID FROM MD_EMP_PLACES WHERE EMPLOYEE_ID= P_EMPLOYEE_ID)
)
)
LOOP
DEPT_TREE := DEPT_TREE_TB(MYROW.DEPT_ID, MYROW.DEPT_NAME);
PIPE ROW(DEPT_TREE);
END LOOP;
RETURN;
END;