我曾經做過的經理下面創建一個存儲過程返回僱員的經理在EMPLOYEE表:創建一個存儲過程返回僱員
[此外:上級是一個數值,幷包含該員工的經理]
create or replace PROCEDURE MANAGER_OF_EMPLOYEE
(
THE_EMPLOYEEID IN NUMBER
)
AS
TEMP VARCHAR2(20);
TEMP2 VARCHAR2(20);
TEMP3 VARCHAR2(20);
TEMP4 VARCHAR2(20);
BEGIN
SELECT MGR.FIRSTNAME, MGR.LASTNAME, EMP.FIRSTNAME, EMP.LASTNAME INTO TEMP, TEMP2, TEMP3, TEMP4
FROM EMPLOYEE EMP
LEFT OUTER JOIN EMPLOYEE MGR
ON EMP.EMPLOYEEID = MGR.REPORTSTO
WHERE EMP.EMPLOYEEID = THE_EMPLOYEEID AND EMP.REPORTSTO = MGR.EMPLOYEEID;
DBMS_OUTPUT.PUT_LINE(TEMP || ' ' || TEMP2 || ' IS THE MANAGER OF ' || TEMP3 || ' ' || TEMP4);
END MANAGER_OF_EMPLOYEE;
我總是得到「安德魯·亞當斯是安德魯·亞當斯的經理」不管是什麼,我把作爲參數的ID。安德魯亞當斯是EMPLOYEE表中的第一排,並且是最高管理者,所以在技術上他是他自己的經理。但是,無論我輸入什麼輸入,爲什麼我會得到相同的輸出?
我認爲你的ON條件是錯誤的。在Emp.Employee = Mgr.ReportsTo和稍後在WHERE你有Emp.ReportsTo = Mgr.EmployeeID。 – Sparky