Write a PL/SQL block to display the last name, first name and overpaid amount by using parameters

  • pl/sql

Write a PL/SQL block to display the last name, first name and overpaid amount by using parameters.

الأجوبة

DECLARE
  CURSOR emp_cur (emp_job_nm VARCHAR2, job_max_sal NUMBER) IS
    SELECT last_name, first_name, (salary - job_max_sal) overpayment
    FROM employees
    WHERE job_id = emp_job_nm
    AND salary > job_max_sal
    ORDER BY salary;
 
  PROCEDURE emp_excesspaid  IS
    last_name_   employees.last_name%TYPE;
    first_name_  employees.first_name%TYPE;
    paid_excess  employees.salary%TYPE;
  BEGIN
    LOOP
      FETCH emp_cur INTO last_name_, first_name_, paid_excess;
      EXIT WHEN emp_cur%NOTFOUND;
      DBMS_OUTPUT.PUT_LINE(last_name_ || ', ' || first_name_ ||
        ' (by ' || paid_excess || ')');
    END LOOP;
  END emp_excesspaid;
 
BEGIN
  DBMS_OUTPUT.PUT_LINE('---------------------------------');
  DBMS_OUTPUT.PUT_LINE('Extra Salary paid to Programmers:');
  DBMS_OUTPUT.PUT_LINE('---------------------------------');
  OPEN emp_cur('IT_PROG', 6000);
  emp_excesspaid; 
  CLOSE emp_cur;
 
  DBMS_OUTPUT.PUT_LINE('-----------------------------------');
  DBMS_OUTPUT.PUT_LINE('Extra Salary paid to Stock Manager:');
  DBMS_OUTPUT.PUT_LINE('-----------------------------------');
  OPEN emp_cur('ST_MAN', 5000);
  emp_excesspaid; 
  CLOSE emp_cur;
END;
/

Sample Output:

SQL> /
---------------------------------
Extra Salary paid to Programmers:
---------------------------------
Hunold, Alexander (by 3000)
-----------------------------------
Extra Salary paid to Stock Manager:
-----------------------------------
Mourgos, Kevin (by 800)
Vollman, Shanta (by 1500)
Kaufling, Payam (by 2900)
Weiss, Matthew (by 3000)
Fripp, Adam (by 3200)

PL/SQL procedure successfully completed.
هل كان المحتوى مفيد؟

معلومات ذات صلة

تبحث عن مدرس اونلاين؟

محتاج مساعدة باختيار المدرس الافضل؟ تواصل مع فريقنا الان لمساعدتك بتأمين افضل مدرس
ماهو التخصص الذي تبحث عنه؟
اكتب هنا...