| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1271 人关注过本帖
标题:游标执行了第一条记录为什么就停了呢???
只看楼主 加入收藏
yzxsl
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-8
收藏
 问题点数:0 回复次数:5 
游标执行了第一条记录为什么就停了呢???

DECLARE cs_emp CURSOR FOR
SELECT emp_code FROM t_emp where dept_code like :ls_find_dept and leave_flag="N" order by emp_code;
open cs_emp;
if sqlca.sqlcode < 0 then
Messagebox("Êý¾Ý¿â´í","ÓαêÎÞ·¨Ö´ÐÐ!" + sqlca.sqlerrtext)
return sqlca.sqlcode
end if

fetch cs_emp into :ls_emp_code;
do while sqlca.sqlcode = 0 //°´²¿ÃÅÄÚµÄÔ±¹¤
Delete from t_leave where emp_code = :ls_emp_code and datediff(day,startdate,:ld_date_start) <=0 and datediff(day,startdate,:ld_date_end) >=0 ;

For li_2 = 0 To DaysAfter(ld_date_start,ld_date_end)
is_cur_date = RelativeDate(ld_date_start,li_2)

if is_cur_date = ld_date_start then // µÚÒ»Ìì
wf_get_leavehour()

insert into t_leave(emp_code,startdate,enddate,startime,endtime,leave_type,reason,leave_day,leave_hour)
values(:ls_emp_code,:is_cur_date,:is_cur_date,:ls_startime,'1730',:ls_leavetype,:ls_reason,:ide_days2,:ide_hours2);
commit;
elseif is_cur_date = ld_date_end then //×îºóÒ»Ìì
wf_get_leaveend()

insert into t_leave(emp_code,startdate,enddate,startime,endtime,leave_type,reason,leave_day,leave_hour)
values(:ls_emp_code,:is_cur_date,:is_cur_date,'0800',:ls_endtime,:ls_leavetype,:ls_reason,:ide_days1,:ide_hours1);
commit;
else //ÖмäµÄ

insert into t_leave(emp_code,startdate,enddate,startime,endtime,leave_type,reason,leave_day,leave_hour)
values(:ls_emp_code,:is_cur_date,:is_cur_date,'0800','1730',:ls_leavetype,:ls_reason,'1','8');
commit;
end if
next
fetch cs_emp into :ls_emp_code;

loop
close cs_emp;

搜索更多相关主题的帖子: emp 游标 sqlca 
2006-04-30 17:53
yzxsl
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-8
收藏
得分:0 
就是说,如果一个游标有几条记录,当有标执行后,运行第一条记录到下面的fetch语句后,就跳出来了,不会继续将剩下的内容执行完,为什么呢????
2006-04-30 17:55
i7521
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-5-9
收藏
得分:0 
我也遇到过类似问题,我试过将提交语句移出循环就没事了,可能是提交时出的错,具体原因就不太清楚了。
2006-05-09 08:51
wsl000
Rank: 2
等 级:新手上路
威 望:4
帖 子:248
专家分:0
注 册:2006-3-8
收藏
得分:0 
fetch cs_emp into :ls_emp_code;
应该放在循环语句里

2006-05-09 09:56
chinesesoft
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-5-13
收藏
得分:0 
检查一下在insert 之前每个变量的值或数据类型和你的table是否一致,在commit之前show 一下你的sqlca.sqlcode 的值。很容易就可以查出问题了,这种情况以前也碰到。
2006-05-13 09:02
hsjljh
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-10-26
收藏
得分:0 
2006-05-14 11:37
快速回复:游标执行了第一条记录为什么就停了呢???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014977 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved