求助_the next sqlcmd fetch many rows[more than 10000]_产供销
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 4  1/1   1  
作者
内容
1934184799  [个人空间]
QQ名  河内-服装


注册  2015-06-23
发贴数  472
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#1»发布于2015-10-21 15:13

在检索考勤记录时,因为操作上一般是按月检索出来,然后处理,修正的. 
现在发现一个问题,不管是在检索时还是在用脚本修正时,只要超过8000条左右吧,数字不是很精准,看日志是10000条 
就会报溢出,并在点其它菜单时提示内存溢出 
 
因为在实际的环境中,如数据脚本中进行检索的时候,用户无法通过脚本来实现分页检索及打印的时候如何避免出现内存溢出. 
 
所以,能否建议老师改进这个sqlfetch? 
 
如图所示





        于 2015-10-21 15:13 被 1934184799 修改


1934184799  [个人空间]
QQ名  河内-服装


注册  2015-06-23
发贴数  472
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#2»发布于2015-10-21 14:46

可以建议由后台程序代码,自动分批处理? 
如果是因为一次检索及处理的数据太多的话




1934184799  [个人空间]
QQ名  河内-服装


注册  2015-06-23
发贴数  472
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#3»发布于2015-10-21 14:55

报错的日志: 
--------------------------------------------------------------- 
the next sqlcmd fetch many rows[more than 10000]: 16981 
select a.rec_id,b.dept_id,b.emp_id,b.emp_id,a.card_no,a.mark_date,     
a.mark_time,a.gather_id,a.ip,a.rec_io_flag      
from timer_original_rec a,emp b where a.card_no=b.emp_card_no  and ( (a.mark_date>'20150831' and a.mark_date<'20151001') or                             
(a.mark_date='20150831' and a.mark_time>='120000') or                             
(a.mark_date='20151001' and a.mark_time<='120000') )       
order by a.card_no,a.mark_date,a.mark_time  
--------------------------------------------------------------- 
--------------------------------------------------------------- 
the next sqlcmd fetch many rows[more than 10000]: 17001 
select gather_id,rec_id,card_no,mark_date,mark_time,add_cause,ip,source_id,rec_io_flag  
from timer_original_rec where ( (mark_date>'20150831' and mark_date<'20151001') or                             
(mark_date='20150831' and mark_time>='080000') or                             
(mark_date='20151001' and mark_time<='160000') )    
order by card_no,mark_date,mark_time  
--------------------------------------------------------------- 
--------------------------------------------------------------- 
the next sqlcmd fetch many rows[more than 10000]: 17001 
commit 
--------------------------------------------------------------- 
--------------------------------------------------------------- 
the next sqlcmd fetch many rows[more than 10000]: 22997 
select emp_id,class_date,group_id,dept_id,card_no,create_date,create_user_id,class_id,on_date,on_time_1,off_time_1,on_time_2, 
off_time_2,on_time_3,off_time_3,on_time_4,off_time_4,on_time_5,off_time_5,total_minute,on_late_minute,off_early_minute,overtime_minute, 
factor_overtime_minute,process_result,manual_result_id,manual_result_val,manual_result_id2,manual_result_val2,note_info,absent_minute, 
n1,n2,s1,n3,n4,n5,n6,n7,n8 from timer_list where 1 = 1  and emp_id in (select emp_id from emp where state  in ('A','B') )  order by class_date,dept_id,emp_id 
---------------------------------------------------------------




1934184799  [个人空间]
QQ名  河内-服装


注册  2015-06-23
发贴数  472
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#4»发布于2015-10-21 15:12

因为在实际的环境中,如数据脚本中进行检索的时候,用户无法通过脚本来实现分页检索及打印的时候如何避免出现内存溢出.





 4  1/1   1  

登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 杭州 - 浙ICP备19051128号-1 网安 33010402003225 ]