кодесурса
«PL / SQL

Упражнения для оператора PL / SQL: Обновите зарплату определенного сотрудника на 8%, если зарплата превышает средний уровень зарплаты по этой работе, и обновите до среднего уровня, если зарплата меньше среднего уровня зарплаты, и отобразить подходящее сообщение

script1adsense2code
script1adsense3code

Оператор управления PL / SQL: упражнение 19 с решением

Напишите программу на PL / SQL, чтобы обновить зарплату определенного сотрудника на 8%, если зарплата превышает средний уровень зарплаты по сравнению с этой работой, и обновить до среднего уровня, если зарплата меньше среднего уровня зарплаты, и отобразить подходящее сообщение.

Пример решения:

Код PL / SQL:

DECLARE
  emp_min_salary NUMBER(6,0);
  emp_max_salary NUMBER(6,0);
  emp_mid_salary NUMBER(6,2);
  tmp_salary     EMPLOYEES.SALARY%TYPE;
  tmp_emp_id     EMPLOYEES.EMPLOYEE_ID%TYPE := 167;
  tmp_emp_name	 EMPLOYEES.FIRST_NAME%TYPE;
BEGIN
  SELECT min_salary,
         max_salary
  INTO emp_min_salary,
       emp_max_salary
  FROM JOBS
  WHERE JOB_ID = (SELECT JOB_ID
                 FROM EMPLOYEES
                 WHERE EMPLOYEE_ID = tmp_emp_id);
 
  -- calculate mid-range
  emp_mid_salary := (emp_min_salary + emp_max_salary) / 2;
  -- get salary of the given employee
  SELECT salary,first_name
  INTO tmp_salary,tmp_emp_name
  FROM employees
  WHERE employee_id = tmp_emp_id;
 
  -- update salary 
  
  IF tmp_salary < emp_mid_salary THEN
    UPDATE employees
    SET salary = emp_mid_salary
    WHERE employee_id = tmp_emp_id;
  ELSE
    UPDATE employees
    SET salary = salary + salary * 8 /100
    WHERE employee_id = tmp_emp_id;
  END IF;
   --display message
  IF tmp_salary > emp_mid_salary THEN
    DBMS_OUTPUT.PUT_LINE('The employee '||tmp_emp_name||' ID ' || TO_CHAR(tmp_emp_id) ||
                         ' works in salary ' || TO_CHAR(tmp_salary) ||
                         ' which is higher than mid-range of salary ' || TO_CHAR(emp_mid_salary));
  ELSIF tmp_salary < emp_mid_salary THEN
    DBMS_OUTPUT.PUT_LINE('The employee '||tmp_emp_name||' ID ' || TO_CHAR(tmp_emp_id) ||
                         ' works in salary ' || TO_CHAR(tmp_salary) ||
                         ' which is lower than mid-range of salary ' || TO_CHAR(emp_mid_salary));
 
  ELSE
    DBMS_OUTPUT.PUT_LINE('The employee '||tmp_emp_name||' ID ' || TO_CHAR(tmp_emp_id) ||
                         ' works in salary ' || TO_CHAR(tmp_salary) ||
                         ' which is equal to the mid-range of salary ' || TO_CHAR(emp_mid_salary));
  END IF;
END;
/

Блок - схема:

«Блок-схема:

Пример вывода:

 Сотрудник Amit ID 167 работает с зарплатой 6200, которая ниже среднего уровня зарплаты 9004
Процедура PL / SQL успешно завершена. 

Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Написать программу на PL / SQL, чтобы показать использование вложенного цикла.
Далее: Написать программу на PL / SQL, используя вложенный цикл с оператором EXIT WHEN.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code