Дополнительное задание 1.7

Постановка задачи

Создайте программу, которая выводит сводную информацию об отделе (используются таблицы Departments, Locations, Countries). Номер отдела вводится с клавиатуры по приглашению «Введите идентификатор отдела: ». Информация выводится в виде:

Номер отдела, название: Отдел № 00, «Бухгалтерия»    
Дом, улица: 127 ул. Пушкина                          
Индекс, город, страна: 197343, Санкт-Петербург, Россия

Решение

ACCEPT dep NUMBER PROMPT 'Введите идентификатор отдела: ';
DECLARE
  dep_name  Departments.Department_Name%TYPE;
  street    Locations.Street_Address%TYPE;
  code      Locations.Postal_Code%TYPE;
  city_name Locations.City%TYPE;
  country   Countries.Country_Name%TYPE;
BEGIN
  SELECT
    NVL(Department_Name , '?') ,
    NVL(Street_Address  , '?') ,
    NVL(Postal_Code     , '?') ,
    NVL(City            , '?') ,
    NVL(Country_Name    , '?')
  INTO dep_name, street, code, city_name, country
  FROM Departments
    LEFT JOIN Locations USING (Location_ID)
    LEFT JOIN Countries USING (Country_ID)
  WHERE Department_ID = &&dep;

  DBMS_OUTPUT.PUT_LINE('Номер отдела, название: Отдел № ' || &&dep || ', «' || dep_name || '»');
  DBMS_OUTPUT.PUT_LINE('Дом, улица: ' || street);
  DBMS_OUTPUT.PUT_LINE('Индекс, город, страна: ' || code || ', ' || city_name || ', ' || country);
END;

Результат

Результат для отдела 60:

Номер отдела, название: Отдел № 60, «IT»
Дом, улица: 2014 Jabberwocky Rd
Индекс, город, страна: 26192, Southlake, United States of America