【发布时间】:2021-03-19 03:55:22
【问题描述】:
我想创建一个程序,该程序将为训练计划表生成从指定开始日期起 4 周(或一个月)的记录,每周 3 次(周一、周三、周五或周二、周四、周六) )。如果该用户的某个日期已经存在培训,则无需插入记录。时间表是:
-
培训编号
-
用户名 VARCHAR
-
培训日期 这是我的代码:
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;我这样调用这个过程:
schedule_training(1,'user1',TO_DATE('21-03-2021','DD-MM-YYYY'));
当我调用它时,会发生未知错误: 从行开始的错误:命令中的 41 - schedule_training(1,'user1',TO_DATE('21-03-2021','DD-MM-YYYY')) 错误报告 - 未知命令
【问题讨论】: