Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
is_lr_APEX.docx
Скачиваний:
84
Добавлен:
15.05.2015
Размер:
1.86 Mб
Скачать

4. Выполнение расчетов в отчете

Далее выполним модификацию отчета о работниках:

      1. создадим PL/SQL функцию, которая вычисляет зарплату работника;

      2. добавим столбец «Зарплата/Год» для отображения результатов этих вычислений в отчете о работниках,

      3. восстановим в столбце иконку редактирования и ссылку на страницу Создать/Редактировать Работника,

      4. назначим всем столбцам русскоязычные заголовки и изменим формат вывода числовых столбцов.

4.1. Вычисление зарплаты работника

  1. Перейдите на домашнюю страницу приложения и щелкните по иконке SQL Workshop, а затем SQL Commands. Появится окно, в котором Вы можете запускать SQL и PL/SQL код в БД.

  2. Введите следующий скрипт:

CREATE OR REPLACE FUNCTION calc_remuneration(

salary IN number, commission_pct IN number) RETURN NUMBER IS

BEGIN

RETURN ((salary*12) + (salary * 12 * nvl(commission_pct,0)));

END;

/

Этот PL/SQL код создает функцию calc_remuneration, принимающую входные (IN) числовые (number) параметры salary (размер месячного оклада) и commission_pct (комиссионный процент) и возвращающую число. Функция вычисляет размер годового вознаграждения работника с учетом процентов.

Обратите внимание на функцию nvl, которая проверяет значение первого параметра на null и в случае, если первый параметр равен null, возвращает значение второго параметра. Это важно в данном случае, т.к. результатом любых арифметических операций со значением null является null. А в данном случае, используя nvl, мы интерпретируем неопределенное значение комиссионного процента (отсутствие комиссионного процента у работника) как значение = 0.

  1. Щелкните по кнопке Run. В окне Results отобразится сообщение «Function created.»

4.2. Добавление столбца с годовой зарплатой

  1. Откройте страницу Page Rendering для страницы Работники:

  1. В секции Regions щелкните по ссылке Работники. Появится раздел Region Definition.

  2. В секции Source проанализируйте имеющийся там автоматически сгенерированный код:

select "EMPLOYEE_ID",

"FIRST_NAME",

"LAST_NAME",

"HIRE_DATE",

"SALARY",

"COMMISSION_PCT"

from "#OWNER#"."EMPLOYEES"

Обратите внимание на следующие моменты:

  • В запрос включены столбцы, выбранные при создании отчета с помощью мастера.

  • #OWNER# – подстановочная строка (substitution string), представляющая имя схемы, с которой ассоциировано приложение и в которой содержатся необходимые таблицы.

  1. Замените код запроса на следующий:

SELECT "EMPLOYEE_ID" "Emp_Id",

"FIRST_NAME",

"LAST_NAME",

"HIRE_DATE",

"SALARY",

"COMMISSION_PCT",

calc_remuneration(salary,commission_pct) "Зарплата/год"

FROM "#OWNER#"."EMPLOYEES"

Обратите внимание на следующие моменты:

  • В запрос добавился вызов созданной ранее функции calc_remuneration, которой передаются значения столбцов SALARY и COMMISSION_PCT.

  • Для столбца EMPLOYEE_ID и столбца с функцией calc_remuneration установлены синонимы, соответственно, «Emp_Id» и «Зарплата/год» .

  1. Щелкните Apply Changes.

  2. Чтобы просмотреть новую страницу отчета Работники, щелкните иконку Run в правом верхнем углу:

Обратите внимание на следующие моменты:

  • Появился новый столбец Зарплата/год.

  • Пропала иконка со ссылкой на страницу Создать/Редактировать Работника. Это произошло потому, что изменилось название столбца, с которым была ассоциирована ссылка на страницу редактирования записи о работнике (мы установили синоним Emp_Id для столбца EMPLOYEE_ID).

  • Столбцы отчета имеют англоязычные названия (кроме Зарплата/Год, которому мы установили русскоязычный синоним в запросе).

  • Столбец со значением идентификатора работника отображается предпоследним в отчете.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]