Упражнения для курсора PL / SQL: отображение названия отдела, главы департамента, города и сотрудника с самой высокой зарплатой
Курсор PL / SQL: упражнение 28 с решением
Напишите блок PL / SQL для отображения названия отдела, главы отдела, города и сотрудника с самой высокой зарплатой. Отображаемое имя, город, ход, emp с самой высокой зарплатой
Пример решения:
Код PL / SQL:
DECLARE
CURSOR dpt_cur IS
SELECT d.department_id id,
department_name dptname,
city,
Nvl(first_name, '...') manager
FROM departments d
left outer join employees e
ON ( d.manager_id = e.employee_id )
join locations l USING(location_id)
ORDER BY 2;
emp_name employees.first_name%TYPE;
emp_max_salary employees.salary%TYPE;
BEGIN
FOR dept_all IN dpt_cur LOOP
SELECT Max(salary)
INTO emp_max_salary
FROM employees
WHERE department_id = dept_all.id;
IF emp_max_salary IS NULL THEN
emp_name :='...';
ELSE
SELECT first_name
INTO emp_name
FROM employees
WHERE department_id = dept_all.id
AND salary = emp_max_salary;
END IF;
dbms_output.Put_line(Rpad(dept_all.dptname, 20)
|| Rpad(dept_all.manager, 15)
|| Rpad(dept_all.city, 20)
|| Rpad(emp_name, 20));
END LOOP;
END;
/
Пример вывода:
SQL> / Бухгалтерский учет Шелли Сиэтл Шелли Администрация Дженнифер Сиэтл Дженнифер Преимущества ... Сиэтл ... Строительство ... Сиэтл ... Договариваюсь ... Сиэтл ... Контроль и кредит ... Сиэтл ... Корпоративный налог ... Сиэтл ... Исполнительный Стивен Сиэтл Стивен Финансы Нэнси Сиэтл Нэнси Правительственные продажи ... Сиэтл ... Людские ресурсы Сьюзен Лондон Сьюзен IT Александр Саутлейк Александр IT Helpdesk ... Сиэтл ... ИТ-поддержка ... Сиэтл ... Производство ... Сиэтл ... Маркетинг Майкл Торонто Майкл НОК ... Сиэтл ... Шеф ... Сиэтл ... Заработная плата ... Сиэтл ... Связи с общественностью Герман Мюнхен Герман Покупка Ден Сиэтл Ден Рекрутинг ... Сиэтл ... Розничные продажи ... Сиэтл ... Продажи Джон Оксфорд Джон Услуги для акционеров ... Сиэтл ... Доставка Адам Юг Сан-Франциско Адам Казначейство ... Сиэтл ... Процедура PL / SQL успешно завершена.
Блок - схема:
Улучшите этот пример решения и опубликуйте свой код через Disqus
Предыдущий: Напишите блок PL / SQL, чтобы показать использование переменной в явном запросе курсора, и никакой набор результатов не будет затронут, несмотря на то, что значение переменной увеличивается после каждой выборки.
Далее: Напишите блок PL / SQL, чтобы отобразить название отдела, имя руководителя, количество сотрудников в каждом отделе и количество сотрудников, перечисленных в job_history.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования