Advertisement
Guest User

Untitled

a guest
Jun 10th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.62 KB | None | 0 0
  1. SET serveroutput ON;
  2.  
  3. --ZADANIE 1
  4. DECLARE
  5.   CURSOR cur IS
  6.     SELECT last_name, salary
  7.     FROM employees;
  8. BEGIN
  9.   FOR i IN cur LOOP
  10.     DBMS_OUTPUT.PUT_LINE('PLACA PRACOWNIKA ' || i.last_name || ' WYNOSI '
  11.       || i.salary || ' ZL');
  12.   END LOOP;
  13. END;
  14. /
  15.  
  16. --ZADANIE 2
  17. CREATE OR REPLACE PROCEDURE proc(l_name employees.last_name%TYPE) IS
  18.   invalid_name EXCEPTION;
  19. BEGIN
  20.   UPDATE jobs
  21.   SET min_salary = min_salary * 1.1
  22.   WHERE job_id IN (SELECT job_id
  23.                    FROM employees
  24.                    WHERE LOWER(last_name) = LOWER(l_name));
  25.  
  26.   IF SQL%ROWCOUNT = 0 THEN
  27.     RAISE invalid_name;
  28.   ELSE
  29.     DBMS_OUTPUT.PUT_LINE('Zaktualizowano ' || SQL%ROWCOUNT || ' wierszy');
  30.   END IF;
  31. EXCEPTION
  32.   WHEN invalid_name THEN
  33.     DBMS_OUTPUT.PUT_LINE('Nie ma pracownika o takim nazwisku!');
  34. END;
  35. /
  36.  
  37. --wywolanie prawidlowe
  38. BEGIN
  39.   proc('King');
  40. END;
  41. /
  42.  
  43. --wywolanie nieprawidlowe
  44. BEGIN
  45.   proc('kowalski');
  46. END;
  47. /
  48.  
  49. --ZADANIE 3
  50. CREATE OR REPLACE FUNCTION fun(dep departments.department_name%TYPE)
  51.   RETURN NUMBER IS
  52.   avg_salary NUMBER;
  53. BEGIN
  54.   SELECT AVG(e.salary)
  55.   INTO avg_salary
  56.   FROM employees e JOIN departments d ON e.department_id = d.department_id
  57.   WHERE d.department_name = dep;
  58.  
  59.   IF avg_salary IS NULL THEN
  60.     DBMS_OUTPUT.PUT_LINE('Nie ma dzialu o takiej nazwie!');
  61.   ELSE
  62.     DBMS_OUTPUT.PUT_LINE('Srednia placa w dziale ' || dep ||
  63.       ' to: ' || avg_salary);
  64.   END IF;
  65.    
  66. RETURN avg_salary;
  67. END;
  68. /
  69.  
  70. --wywolanie prawidlowe
  71. BEGIN
  72.   DBMS_OUTPUT.PUT_LINE(fun('IT'));
  73. END;
  74. /
  75.  
  76. --wywolanie nieprawidlowe
  77. BEGIN
  78.   DBMS_OUTPUT.PUT_LINE(fun('AAAAAAAA'));
  79. END;
  80. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement