123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- CREATE DEFINER = CURRENT_USER PROCEDURE `import_exam_students`(IN `batch_id` bigint)
- BEGIN
- declare total BIGINT(20);
- declare count BIGINT(20);
- declare id BIGINT(20);
- declare course_id_temp BIGINT(20);
- declare course_id BIGINT(20);
- declare course_code varchar(255);
- declare identity_number varchar(255);
- declare student_code varchar(255);
- declare org_id_temp BIGINT(20);
- declare org_id BIGINT(20);
- declare org_code varchar(255);
- declare root_org_id BIGINT(20);
-
- DECLARE cursor_temp CURSOR FOR
- select t.id,t.course_id,t.org_id,t.course_code,t.student_code,t.identity_number,t.org_code,t.root_org_id
- from ec_e_exam_student_tmp t
- where t.batch_id= batch_id;
-
- set count = 0;
- select count(1) into total from ec_e_exam_student_tmp t where t.batch_id= batch_id;
-
- open cursor_temp;
-
- read_loop: LOOP
- set count = count+1;
- FETCH cursor_temp INTO id,course_id,org_id,course_code,student_code,identity_number,org_code,root_org_id;
-
- SELECT id,course_id,org_id,course_code,student_code,identity_number,org_code,root_org_id;
-
- IF course_id is null THEN
- SELECT x.id into course_id_temp from ecs_core_course x where x.code= course_code and x.enable=true and x.org_id=root_org_id;
- IF course_id_temp is not null THEN
- update ec_e_exam_student_tmp x set x.course_id=course_id_temp
- where x.course_id is null and x.course_code=course_code and x.root_org_id=root_org_id and x.batch_id= batch_id;
- END IF;
- set course_id_temp=null;
- END IF;
-
- IF org_id is null THEN
- SELECT x.id into org_id_temp from ecs_core_org x where x.code= org_code and x.root_id=root_org_id;
- IF org_id_temp is not null THEN
- update ec_e_exam_student_tmp x set x.org_id=org_id_temp
- where x.org_id is null and x.org_code=org_code and x.root_org_id=root_org_id and x.batch_id= batch_id;
- END IF;
- set org_id_temp=null;
- END IF;
-
- commit;
-
- IF total = count THEN
- LEAVE read_loop;
- END IF;
-
- END LOOP;
-
- close cursor_temp;
-
- END
|