Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / SQL и PL/SQL в Oracle10g
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

Лабораторная работа 15.1 Применение конструкции IF...THEN...ELSE

Операторы условного перехода в Oracle PL/SQL, конструкция IF...THEN...ELSE

Задание:

Напишите код PL/SQL, который бы:

1. Запрашивал информацию о номере сотрудника (employee_id) в таблице hr.employees.

2. На основе информации о номере сотрудника производил проверку количества лет, которое отработал сотрудник.

3. После этого нужно изменить значение заработной платы (столбец salary) для данного сотрудника в соответствии со следующими условиями:

·        если сотрудник проработал меньше 10 лет, то зарплата повышается на 5 процентов;

·        если сотрудник проработал 10 лет или больше, то зарплата повышается на 10 процентов;

·        если сотрудник проработал 15 лет или больше, то зарплата повышается на 15 процентов.

После окончания обновления выведите информацию о номере сотрудника, его имени и фамилии, количестве лет, которые он отработал, а также о старой и новой заработной плате в соответствии с рис. Лаб. 15.1-1.

Рис. Лаб. 15.1-1

Сохраните полученный код PL/SQL.

Решение:

Соответствующий код PL/SQL может выглядеть так (выполняется в SQL*Plus):

SET SERVEROUTPUT ON;

DECLARE

nEmpID hr.EMPLOYEES.Employee_id%TYPE := &Номер_сотрудника;

nOldSalary hr.employees.salary%Type;

nNewSalary hr.Employees.SALARY%Type;

sFirstName hr.EMPLOYEES.first_name%Type;

sLastName hr.employees.Last_Name%Type;

dHireDate hr.employees.HIRE_DATE%type;

nYears number(4,0);

BEGIN

SELECT salary into nOldSalary from hr.employees where employee_id = nEmpId;

SELECT first_name into sFirstName from hr.employees where employee_id = nEmpId;

SELECT last_name into sLastName from hr.employees where employee_id = nEmpId;

SELECT hire_date into dHireDate from hr.employees where employee_id = nEmpId;

nYears := MONTHS_BETWEEN(SYSDATE, dHireDate)/12;

IF nYears >= 15 then

nNewSalary := nOldSalary*1.15;

ELSIF nYears >= 10 Then

nNewSalary := nOldSalary*1.10;

ELSE

nNewSalary := nOldSalary*1.05;

END IF;

UPDATE hr.employees SET SALARY = nNewSalary WHERE employee_id = nEmpID;

commit;

DBMS_OUTPUT.PUT_LINE('Номер сотрудника: ' || nEmpID || '  Имя и фамилия: ' || sFirstName || ' ' || sLastName || '  Проработано лет: ' || nYears);

DBMS_OUTPUT.PUT_LINE('Старая зарплата: ' || nOldSalary || '  Новая зарплата: ' || nNewSalary);

END;

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru