Advertisement
Guest User

Untitled

a guest
Aug 25th, 2017
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. CREATE TABLE DEPARTMENT
  2. (DEPARTMENT_ID NUMBER PRIMARY KEY,
  3. DEPARTMENT_NAME VARCHAR(30) NOT NULL
  4. );
  5.  
  6. CREATE TABLE JOBS
  7. (JOB_ID NUMBER PRIMARY KEY,
  8. JOB_TITLE VARCHAR(35) NOT NULL,
  9. MIN_SALARY DECIMAL NOT NULL,
  10. MAX_SALARY DECIMAL NOT NULL
  11. );
  12.  
  13. CREATE TABLE EMPLOYEES
  14. (EMPLOYEE_ID NUMBER PRIMARY KEY,
  15. FIRST_NAME VARCHAR(20) NOT NULL,
  16. LAST_NAME VARCHAR(25) NOT NULL,
  17. EMAIL VARCHAR(25) NOT NULL,
  18. PHONE_NUMBER VARCHAR(20) NOT NULL,
  19. HIRE_DATE DATE NOT NULL,
  20. JOB_ID NUMBER NOT NULL,
  21. SALARY DECIMAL NOT NULL,
  22. DEPARTMENT_ID NUMBER NOT NULL,
  23. CONSTRAINT emp_job_fk FOREIGN KEY(JOB_ID) REFERENCES JOBS(JOB_ID),
  24. CONSTRAINT emp_department_fk FOREIGN KEY(DEPARTMENT_ID) REFERENCES DEPARTMENT(DEPARTMENT_ID)
  25. );
  26.  
  27. INSERT INTO DEPARTMENT (DEPARTMENT_ID,DEPARTMENT_NAME)
  28. VALUES(1,'IT');
  29. INSERT INTO DEPARTMENT (DEPARTMENT_ID,DEPARTMENT_NAME)
  30. VALUES(2,'Sales');
  31.  
  32. INSERT INTO JOBS (JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY)
  33. VALUES (1,'IT Administrator',250000.00,50000.00);
  34. INSERT INTO JOBS (JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY)
  35. VALUES (2,'Salesman',200000.00,40000.00);
  36.  
  37. INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,DEPARTMENT_ID)
  38. VALUES (1,'Tony','Starc','starc@gmail.com','0123456789',TO_DATE('15/1/2008','DD/MM/YYYY'),1,45000.00,1);
  39. INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,DEPARTMENT_ID)
  40. VALUES (2,'Bruce','Wayne','bruce@gmail.com','0123456788',TO_DATE('15/1/2009','DD/MM/YYYY'),1,40000.00,1);
  41. INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,DEPARTMENT_ID)
  42. VALUES (3,'Larry','Ellison','larry@gmail.com','0123456787',TO_DATE('15/1/2010','DD/MM/YYYY'),1,30000.00,1);
  43. INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,DEPARTMENT_ID)
  44. VALUES (4,'Steve','Jobs','steve@gmail.com','0123456786',TO_DATE('15/1/2011','DD/MM/YYYY'),2,35000.00,2);
  45. INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,DEPARTMENT_ID)
  46. VALUES (5,'Remy','Lebeau','remy@gmail.com','0123456785',TO_DATE('15/1/2012','DD/MM/YYYY'),2,30000.00,2);
  47. INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,DEPARTMENT_ID)
  48. VALUES (6,'Clark','Kent','clark@gmail.com','0123456784',TO_DATE('15/1/2013','DD/MM/YYYY'),2,20000.00,2);
  49.  
  50. CREATE OR REPLACE FUNCTION fn_emps_per_dept_jc450912 (f_dept_id NUMBER)
  51. RETURN SYS_REFCURSOR
  52. AS
  53. emp_details SYS_REFCURSOR;
  54. BEGIN
  55. OPEN emp_details
  56. FOR
  57. SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,JOB_TITLE
  58. FROM EMPLOYEES,JOBS,DEPARTMENT
  59. WHERE DEPARTMENT.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID
  60. AND JOBS.JOB_ID = EMPLOYEES.JOB_ID
  61. AND EMPLOYEES.DEPARTMENT_ID = f_dept_id;
  62. RETURN emp_details;
  63. EXCEPTION
  64. WHEN NO_DATA_FOUND
  65. THEN
  66. DBMS_OUTPUT.PUT_LINE('Department not available');
  67. END fn_emps_per_dept_jc450912;
  68.  
  69. VARIABLE e REFCURSOR
  70. EXECUTE :e := fn_emps_per_dept_jc450912(1);
  71.  
  72. PRINT e;
  73.  
  74. EMPLOYEE_ID FIRST_NAME LAST_NAME JOB_TITLE
  75. ----------- -------------------- ------------------------- ----------------------------
  76. 1 Tony Starc IT Administrator
  77. 2 Bruce Wayne IT Administrator
  78. 3 Larry Ellison IT Administrator
  79.  
  80. VARIABLE e REFCURSOR
  81. EXECUTE :e := fn_emps_per_dept_jc450912(5);
  82.  
  83. PRINT e;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement