情境:每家公司應該都會有office階層, 從總公司, 分公司, 分公司的分公司, ...一層層下去,
現在想要知道某位同事所屬的office(包含其上層到源頭總公司)階層
CREATE OR REPLACE FUNCTION SCHEMA_NAME.GET_USER_OFC_LEVEL(p_user_id VARCHAR2) RETURN VARCHAR2 IS /* CREATED BY CHRIS ON 2015.09.14 */ vUSERPath VARCHAR2(200); vOFFICEID OFFICE.OFFICE_ID%TYPE; vOFFICE OFFICE.OFFICE%TYPE; vUPOFFICEID OFFICE.UP_OFFICE_ID%TYPE; BEGIN SELECT B.OFFICE_ID,B.OFFICE,B.UP_OFFICE_ID INTO vOFFICEID,vOFFICE,vUPOFFICEID FROM USERS A, OFFICE B WHERE A.OFFICE_ID=B.OFFICE_ID AND A.USER_ID=p_user_id; vUSERPath := vOFFICE; WHILE vUPOFFICEID <> 0 LOOP SELECT OFFICE_ID,AGENT,OFFICE,UP_OFFICE_ID INTO vOFFICEID,vAGENT,vOFFICE,vUPOFFICEID FROM OFFICE WHERE OFFICE_ID=vUPOFFICEID; // UP_OFFICE_ID就是OFFICE_ID的上一層 vUSERPath := vOFFICE || ' ==> ' || vUSERPath; END LOOP; RETURN vUSERPath; END;取得user的office level
SELECT GET_USER_OFC_LEVEL('CHRISLIN') FROM DUAL;結果可能類似下面
HQ ==> ERO ==> HAM
沒有留言:
張貼留言