I need to replace employee id in shift table for a particular day with another employee id who hasn't any shift for a particular day. This my tables,
CREATE TABLE EMPLOYEE
(EMPLOYEE_ID NUMBER(4) NOT NULL,
NAME VARCHAR(50),
GENDER VARCHAR(10),
BIRTH_DAY DATE,
PRIMARY KEY(EMPLOYEE_ID)
);
CREATE TABLE SHIFT
(SHIFT_ID NUMBER(4),
SHIFT_DATE DATE,
CUSTOMER_ID NUMBER(4),
SERVICE_ID NUMBER(4),
EMPLOYEE_ID NUMBER(4),
SHIFT_CHARGE FLOAT(10),
PRIMARY KEY(SHIFT_ID),
FOREIGN KEY (EMPLOYEE_ID) REFERENCES EMPLOYEE(EMPLOYEE_ID)
);
For the above purpose, I want to create a procedure. I created the procedure is below. But there is a compilation error.
CREATE OR REPLACE PROCEDURE CHANGE_SHIFT_SHEDULED
(
EMPLOYEE_ID IN SHIFT.EMPLOYEE_ID%TYPE,
SHIFT_DATE IN SHIFT.SHIFT_DATE%TYPE
)
AS
CHECK_CON BOOLEAN:=TRUE;
BEGIN
FOR SICK_EMP_SHIFT_REC IN (SELECT * FROM SHIFT WHERE SHIFT.EMPLOYEE_ID=EMPLOYEE_ID AND SHIFT.SHIFT_DATE=SHIFT_DATE)
LOOP
FOR EMP_REC IN (
SELECT e.EMPLOYEE_ID,COUNT(e.EMPLOYEE_ID)AS SHIFT_COUNT,
CASE
WHEN SHIFT_COUNT>0 THEN FALSE
ELSE TRUE
END AS SHIFT_COUNT
FROM EMPLOYEE e LEFT OUTER JOIN SHIFT s ON e.EMPLOYEE_ID=s.EMPLOYEE_ID
WHERE s.SHIFT_DATE=SHIFT_DATE
GROUP BY e.EMPLOYEE_ID)
LOOP
CHECK_CON:=EMP_REC.SHIFT_COUNT;
IF CHECK_CON THEN
UPDATE SHIFT s SET s.EMPLOYEE_ID=EMP_REC.EMPLOYEE_ID WHERE s.SHIFT_ID=SICK_EMP_SHIFT_REC.SHIFT_ID;
EXIT;
END IF;
END LOOP;
END LOOP;
END;
/
Please anyone help me to solve this issue.