Вот что я должен делать.Предположим, что таблицы созданы, и все столбцы имеют правильное имя
. Используя хранимые процедуры и курсоры, отобразите местоположение (включая улицу, почтовый индекс, город и страну) менеджеров с идентификатором задания IT_PROG.или SA_MAN с зарплатой более 3000 ".
Вот код, который я написал до сих пор, но оператор sql для курсора, похоже, не работает.Для таблицы DEPARTMENTS FK - это MANAGER_ID и LOCATION_ID, для таблицы EMPLOYEES FK - это JOB_ID, а в таблице LOCATIONS нет FK.Все первичные ключи установлены
Вот код:
create or replace procedure mgtLocation
is
cursor getLoc is
select LOCATIONS.STREET_ADDRESS, LOCATIONS.POSTAL_CODE, LOCATIONS.CITY,
LOCATIONS.COUNTRY, LOCATIONS.LOCATIONS_ID, LOCATIONS.LOCATIONS_ID
from LOCATIONS
inner join DEPARTMENTS on DEPARTMENTS.MANAGER_ID = EMPLOYEES.EMPLOYEE_ID
inner join LOCATIONS on LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
where EMPLOYEES.Job_ID in (select Job_ID from EMPLOYEES where Job_ID = 'IT_PROG' or Job_ID = 'SA_MAN' and SALARY > 3000);
EmpLoc getLoc%rowtype;
begin
dbms_output.put_line('=================');
open getLoc;
loop
fetch getLoc into EmpLoc;
EXIT WHEN getLoc%NOTFOUND;
dbms_output.put_line('Street: ' || EmpLoc.STREET_ADDRESS ||
' Zip Code: ' || EmpLoc.POSTAL_CODE ||
' City: ' || EmpLoc.CITY ||
' Country: ' || EmpLoc.COUNTRY);
end loop;
dbms_output.put_line('=================');
close getLoc;
end;
/
execute mgtLocation;
Я получаю сообщение об ошибке для внутренних объединений и не могу понять, как их исправить, чтобы этоРабота.