Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.15 KB | None | 0 0
  1. -- ex3
  2. CREATE OR REPLACE PROCEDURE newJob(p_empid employees.employee_id%TYPE, p_jobid jobs.job_id%TYPE)
  3. AS
  4.     v_count NUMBER(1,0);
  5.     v_current_jobid employees.job_id%TYPE;
  6.     v_depId departments.department_id%TYPE;
  7.     v_hiredate employees.hire_date%TYPE;
  8. BEGIN
  9.     SELECT COUNT(*)
  10.     INTO v_count
  11.     FROM employees
  12.     WHERE employee_id = p_empid;
  13.    
  14.     IF v_count = 0 THEN
  15.         raise_application_error(-20000, 'no such employee:['||p_empid||']');
  16.     END IF;
  17.  
  18.     SELECT job_id
  19.     INTO v_current_jobid
  20.     FROM employees
  21.     WHERE employee_id = p_empid;
  22.  
  23.     IF p_jobid = v_current_jobid THEN
  24.         raise_application_error(-20000, 'same job:['||p_jobid||']');
  25.     END IF;
  26.  
  27.     SELECT hire_date
  28.     INTO v_hiredate
  29.     FROM employees
  30.     WHERE employee_id = p_empid;
  31.  
  32.     SELECT department_id
  33.     INTO v_depId
  34.     FROM employees
  35.     WHERE employee_id = p_empid;
  36.  
  37.     INSERT INTO job_history
  38.     VALUES (p_empid, v_hiredate, (SELECT CURRENT_DATE - 1 FROM dual), p_jobid, v_depId);
  39.  
  40.     UPDATE employees
  41.     SET job_id = p_jobid,
  42.         hire_date = (SELECT CURRENT_DATE FROM dual)
  43.     WHERE employee_id = p_empid;
  44. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement