如何使用从选择查询块获得的pl / sql循环在单击按钮时一次插入11-13 gr_numbers

问题描述 投票:0回答:1

我要插入从APP_USER获取的所有gr_number,结果图像附加约11-13提取的gr_numbers。我的目标是我有一个按钮,当我单击按钮时,我想编写一个过程,它将使用循环插入所有gr_numbers每当我单击按钮时,就单击按钮。

这里是我的Gr_numbers结果图像,它是从选择块获得的。在点击按钮上插入所有gr_number时需要enter image description here

代码有错误/错误,它将无法在单击按钮上插入所有的gr_numbers

declare
vtm NUMBER; 

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';

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)
values( :P7_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

);
exception WHEN too_many_rows THEN

dbms_output.put_line('Errors fetching are more than one');

end;

end loop;
commit;
end;
sql oracle plsql oracle11g oracle-sqldeveloper
1个回答
0
投票

如果表中已经有gr_number,那么这应该只是标准的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'
© www.soinside.com 2019 - 2024. All rights reserved.