Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17075
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 86
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-04 12:28
个人简介

当牛人牛到一定的境界,可能就会重归和平,所以我还是一个一直梦想成为hacker的屌丝愤青!

文章分类
文章存档

2013年(6)

我的朋友

分类: Oracle

2013-06-04 12:55:56

今天遇到个问题,要定义一个游标从数据库中取数据,然后根据取出来的步骤标志执行相应的操作,每一步执行完后,要把库中的操作步骤更新到下一步,然后循环执行下一步,一开始想的办法是用嵌套循环,但是那样的话来回的定义游标、打开游标、关闭游标,占系统资源,而且本身也不是很好的解决办法,由于初学Pro/C,不晓得有滚动游标这一说,但是个人觉得游标fetch到最后应该有一种机制能把游标fetch的指针移到开头,然后重新从头读取,有了这个思路就上网查,可惜没找到解决办法,可喜的是看到了有个滚动游标这个东西,然后就想拿这个自己试试看能否解决我遇到的问题,呵呵,结果让我很满意,现将我的使用部分代码贴出来分享给大家:
step = 1;
for(int i=0; step <= 3; i++)
{
TZEROA(ic_offline);
if( curEndFlag )
{
i = 0;
curEndFlag = 0;
EXEC SQL FETCH FIRST g_ic_offline_cur INTO :ic_offline;
}
else
{
EXEC SQL FETCH NEXT g_ic_offline_cur INTO :ic_offline;
}
if (SQL_NOTFOUND)
{
curEndFlag = 1;
step++;
continue;
}
else if (!SQL_ISOK)
{
EXEC SQL CLOSE g_ic_offline_cur;
sleep(1);
break;


}


file_stat=ic_offline.fl_State; 


TRIM(ic_offline.fs_FileName);
TZERO(tfilename);
strcpy(tfilename,ic_offline.fs_FileName);


strcat(oldname,tfilename);   
strcat(newname,tfilename);            
switch(file_stat)
{
case 0: 
break;
case 1:    
lRet=file_process(crudate,tfilename);    
if(lRet<0)    
{              
sleep(10);  
break; 
}    
else
{
COMLOG("文件解析成功");
}
case 2:
lRet=trans_process(crudate,tfilename);     
if(lRet<0)    
{        
COMLOG("trans_process error lRet:[%d]",lRet);        
break; 
}
case 3:
COMLOG("newname:[%s]oldname:[%s]",newname,oldname);    
lRet=rename(oldname,newname);     
if(lRet!=0)
{
COMLOG( "rename the file:[%s] to the file:[%s] error", oldname, newname);
break;
}
TZERO(okname);
sprintf(okname, "%s.ok", oldname);
lRet = remove(okname);     
if(lRet != 0)
{
COMLOG("remove the ok file[%s] error, errmsg[%s]", okname, strerror(errno));               
break;                
}
EXEC SQL UPDATE ticoffline    
SET fl_State = 0, 
fs_Date = :crudate
WHERE fs_FileName = :tfilename;     
if(!SQL_ISOK)
{
COMLOG( "update state error ");
DB_Rollback();
break; 
}                
break;      
default:
COMLOG("file_stat err:[%d]",file_stat);           
}
}

阅读(1270) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:scp相较ftp谁更优?

给主人留下些什么吧!~~

校长的马夹2013-06-05 09:12:22

学习了,期待分享更多的博文