я сделал следующее, чтобы создать хранимую процедуру, которая возвращает менеджер работника в ЕМРЬОУЕЙ таблице:Создайте хранимую процедуру, которая возвращает менеджер работника
[Дополнительно: REPORTSTO это числовое значение и содержит идентификатор менеджера сотрудника]
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;
Я всегда получаю Эндрю Адамс является распорядителем Эндрю Адамс ", независимо от того, что я ставлю в качестве параметра. Эндрю Адамс является первой строкой в таблице EMPLOYEE и является топ-менеджером, так что технически он является его собственным менеджером. Но почему я получаю тот же результат независимо от того, какой ввод я вкладываю?
Я думаю, что ваше состояние ON неправильное. На Emp.Employee = Mgr.ReportsTo, а затем в WHERE у вас есть Emp.ReportsTo = Mgr.EmployeeID. – Sparky