database - Nested Cursor call is calling inner cursor only once in MYSQL -


there 2 procedures. when tested separately execute fine. when first sp calls 2nd sp, not called after first call. please resolve issue. first cursor:

    begin declare vattendempid,vnoofdays, vempid int default 0; declare processed boolean default false; declare curemp cursor select distinct empid d1  rawattendance date_format(     indatetime,'%m') =  process_month , date_format( indatetime,'%y') = process_year order     empid;  declare continue handler not found set processed = true ;      open curemp;     loopemp: loop     fetch curemp vempid;          if processed             close curemp;             leave loopemp;         end if;         --select vempid;         call sp_attendance(vempid,process_month,process_year);     end loop loopemp; end 

2nd cursor.. nested cursor

begin declare  vindatetime, voutdatetime,vtempindatetime, vtempoutdatetime datetime ; declare vattendempid ,vdiffhr int default 0; declare  eprocessed boolean default false; declare curattendance cursor select empid, indatetime ,outdatetime  rawattendance        empid=vempid , date_format( indatetime, '%m' ) =  process_month , date_format( indatetime, '%y' ) = process_year      order indatetime;      open curattendance;     att_loop:loop     fetch curattendance vattendempid, vindatetime,voutdatetime;      select concat ('in time 0 ==',vindatetime, ' out ==', voutdatetime, ' empid=',vattendempid);             select 'looping';  if eprocessed     select 'loop end';     select concat ('in time 4 ==',vtempindatetime, ' out ==', vtempoutdatetime, ' empid=',vattendempid);         set vdiffhr =timestampdiff(hour,vtempindatetime,vtempoutdatetime);      insert emp_attendance_processed(empid,in_date_time, out_date_time, workedhr)          values(vattendempid,vtempindatetime,vtempoutdatetime, vdiffhr);         set vtempoutdatetime=voutdatetime;         close curattendance;     end if; end loop att_loop;   end 

try reset continue handler variable processed after inner procedure called.

set processed = false; 

the problem handler not found not executed if cursor in first procedure returns no rows, if nested select returns no rows. , second procedure contains select statements, believe 1 of them returning empty set @ least 1 time. if that's not intended, may have faulty parameters assigned.

open curemp; loopemp: loop fetch curemp vempid;      if processed         close curemp;         leave loopemp;     end if;     --select vempid;     call sp_attendance(vempid,process_month,process_year);     set processed = false; end loop loopemp; 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

inno setup - TLabel or TNewStaticText - change .Font.Style on Focus like Cursor changes with .Cursor -