13个gr\ U编号

aelbi1ox  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(209)

我想插入这些所有的gr\U号码,这是从应用程序用户获得,结果的图像是附加约11-13 gr\U号码取得。我的目标是我有一个按钮,我想写一个过程时,我会点击按钮,它会插入所有的gr\ U数字使用循环点击按钮,每当我点击按钮。
这是我的gr\ U数字结果图像,是从选择块得到的。这是插入所有gr\ U编号所需的点击按钮,请在此处输入图像描述
代码有错误/错误它不会在单击按钮时插入所有gr\ U编号

declare
vtm NUMBER(38);

-- vtm student.gr_number%TYPE;
tab apex_application_global.vc_arr2;
BEGIN
tab := apex_util.string_to_table (vtm);
SELECT s.gr_number into vtm
FROM student s
left join class_time ct on ct.class_id=s.class_id and
instr(s.class_time, ct.class_time) > 0
where upper(trim(ct.class_id)) = upper(trim(:APP_USER)) and s.gr_number is not null
and is_active_flg = 'Y';

dbms_output.put_line(vtm); 
for i in vtm..tab.count loop
begin

insert into STUDENT_CLASS_ATTEND(gr_number, student_id, PERIOD_NEXT_DAY_FLG, attend_date,                                    period_start_dt, period_end_dt, PERIOD_DURATION,  course_name, class_time, branch_id, shift_id, teacher_id, class_id,  marked_by,     course_id, class_uid)
                          select vtm, student_id, next_day_flg,        to_date(UPPER(:P7_ATTEND_DT_TMP),'DD-MON-YYYY'), prd_start_tm,   prd_end_tm,    prd_diff_minutes, course_name, class_time, branch_id, shift_id, teacher_id, class_id, :v_employee_id, course_id, class_uid
from (
WITH
class_start_tm as
(select s.gr_number, 
        s.class_id, 
        s.class_time as student_class_time_list, 
        ct.class_time, 
        ct.seq, 
        to_date(upper(:P7_ATTEND_DT_TMP)||' '||ct.class_time, 'DD-MON-YYYY HHMIAM') as class_first_tm
from student s
join class_time ct on s.class_id=ct.class_id
where s.gr_number =:P7_GR_TMP
and ct.seq=1
)
,tm as(
Select s.gr_number,
       cl.duration_minutes,
       t.class_first_tm,
       to_date(UPPER(:P7_ATTEND_DT_TMP)||' '||to_char(cl.start_time,'HHMIAM'), 'DD-MON-YYYY HHMIAM') as prd_start_tm,
       to_date(UPPER(:P7_ATTEND_DT_TMP)||' '||to_char(cl.start_time,'HHMIAM'), 'DD-MON-YYYY HHMIAM')+ interval '30' minute as prd_end_tm,
       (case when to_date(UPPER(:P7_ATTEND_DT_TMP)||' '||to_char(cl.start_time,'HHMIAM'), 'DD-MON-YYYY HHMIAM') < t.class_first_tm then 'Y' else 'N' end) next_day_flg
from calender_24hr cl
join student s on instr(s.class_time,cl.time_12hr)>0 and s.gr_number=:P7_GR_TMP
join class_start_tm t on t.gr_number=s.gr_number
)
,tm1 as (
select gr_number,
       duration_minutes,
--       class_first_tm,
       (case when next_day_flg='Y' then prd_start_tm+1 else prd_start_tm end) prd_start_tm,
       (case when next_day_flg='Y' then prd_end_tm+1 else prd_end_tm end) prd_end_tm,
       next_day_flg
from tm
order by (case when next_day_flg='Y' then prd_start_tm+1 else prd_start_tm end)
)
,tm2 as (
select gr_number,
       max(next_day_flg) AS next_day_flg, 
       min(prd_start_tm) AS prd_start_tm, 
       max(prd_end_tm) AS prd_end_tm, 
       round((max(prd_end_tm)-min(prd_start_tm))*24*60,0)  AS prd_diff_minutes,
       sum(duration_minutes) actual_minutes,
       round((max(prd_end_tm)-min(prd_start_tm))*24*60,0) - sum(duration_minutes) as gap_minutes
from tm1
 group by gr_number
) 
select st.gr_number, st.student_id, tm.next_day_flg, prd_start_tm, prd_end_tm, tm.prd_diff_minutes, 
       tm.actual_minutes, tm.gap_minutes, 
       st.course as course_id, cr.course_name, 
       cl.class_uid, st.class_id, st.class_time, 
       st.branch_id, st.shift_id, cl.teacher_id
from tm2 tm
join student st on tm.gr_number=st.gr_number
left join course cr on cr.course_id = st.course
left join class cl  on cl.class_id = st.class_id
);

exception WHEN NO_DATA_FOUND THEN
dbms_output.put_line('there is no data..');

end;

end loop;
commit;
end;

但初始化图像中发生的错误在下面输入图像描述

zbsbpyhn

zbsbpyhn1#

如果表中已经有gr\ U编号,那么这应该只是一个标准的insert select语句

insert into STUDENT_CLASS_ATTEND(
  gr_number, student_id, PERIOD_NEXT_DAY_FLG, 
  attend_date, period_start_dt, period_end_dt, 
  PERIOD_DURATION, course_name, class_time, 
  branch_id, shift_id, teacher_id, class_id, 
marked_by, course_id, class_uid)
select  
  s.gr_number, :P7_STUDENT_ID, :P7_PERIOD_NEXT_DAY_FLG, 
  to_date(UPPER(:P7_ATTEND_DATE),'DD-MON-YYYY'), :P7_PERIOD_START_DT, :P7_PERIOD_END_DT, 
  :P7_PERIOD_DURATION, :P7_COURSE_NAME, :P7_CLASS_TIME, 
  :P7_BRANCH_ID, :P7_SHIFT_ID, :P7_TEACHER_ID, :P7_CLASS_ID, 
  :v_employee_id, :P7_COURSE_ID, :P7_CLASS_UID
FROM student s
left join class_time ct on ct.class_id=s.class_id and
instr(s.class_time, ct.class_time) > 0
where upper(trim(ct.class_id)) = upper(trim(:APP_USER)) and s.gr_number is not null
and is_active_flg = 'Y'

相关问题