I want to create a procedure that would generate records for a training schedule table with dates for 4 weeks(or a month) from the specified start date, 3 times per week (Monday, Wednesday, Friday or Tuesday, Thursday, Saturday). If a training already exists on a date for that user, there is no need to insert a record. The schedule table is:
TRAININGID NUMBER
USERNAME VARCHAR
TRAININGDATE DATE Here my code:
CREATE OR REPLACE PROCEDURE schedule_training (p_training_id IN OUT trainings.trainingid%TYPE, p_username trainings.username%TYPE, p_training_date IN OUT trainings.trainingdate%TYPE) IS v_date DATE := TO_DATE(TO_CHAR(ADD_MONTHS(p_training_date,1),'DD-MON-YYYY')); v_date1 trainings.trainingdate%TYPE; v_username trainings.username%TYPE; BEGIN WHILE(p_training_date < v_date) LOOP SELECT trainingdate, username INTO v_date1, v_username FROM trainings; IF(TO_CHAR(p_training_date,'d') = 1) THEN IF p_username != v_username AND p_training_date != v_date1 THEN INSERT INTO trainings VALUES (p_training_id, p_username, p_training_date); p_training_id := p_training_id + 1; END IF; ELSIF(TO_CHAR(p_training_date,'d') = 3) THEN IF p_username != v_username AND p_training_date != v_date1 THEN INSERT INTO trainings VALUES (p_training_id, p_username, p_training_date); p_training_id := p_training_id + 1; END IF; ELSIF(TO_CHAR(p_training_date,'d') = 5) THEN IF p_username != v_username AND p_training_date != v_date1 THEN INSERT INTO trainings VALUES (p_training_id, p_username,p_training_date); p_training_id := p_training_id + 1; END IF; END IF; p_training_date := TO_DATE(TO_DATE(v_date,'dd.mm.yyyy')+ 1, 'dd.mm.yyyy'); END LOOP; END schedule_training;and I am calling this procedure like this:
schedule_training(1,'user1',TO_DATE('21-03-2021','DD-MM-YYYY'));
When I am calling it there is occurring unknown error: Error starting at line : 41 in command - schedule_training(1,'user1',TO_DATE('21-03-2021','DD-MM-YYYY')) Error report - Unknown Command