Proc 实现批量数据读取 cursor

2 篇文章 0 订阅

在使用proc访问数据库时,往往需要批量读取数据库数据,这就需要用到cursor,即游标。

他的基本形式是:

1.声明:

EXEC SQL WHENEVER NOTFOUND DO setNotFound();

EXEC SQL DECLARE 游标名 CURSOR FOR

select .....from .....

2.调用:

 EXEC SQL OPEN 游标名;

while(true)

{

   获得数据;

 if(seNotFound())

{

  EXEC SQL CLOSE 游标名称;

}

}


 

 

 

例如:

EXEC SQL WHENEVER SQLERROR DO sqlerror();
  EXEC SQL WHENEVER NOTFOUND DO setNotFound();
  EXEC SQL DECLARE CURGetpt_ftp_information CURSOR FOR
  SELECT NVL(JOB_NAME,'XXX'),
  NVL(LOCAL_FTP_DIRECTORY,'xxx'),
  NVL(LOCAL_BACKUP_DIRECTORY,'xxx'),
  NVL(REMOTE_IP,'_ _ _'),
  NVL(REMOTE_DIRECTORY,'xxx'),
  NVL(FTP_ACCOUNT,'xxx'),
  NVL(FTP_PASSWORD,'xxx'),
  NVL(ADDITIONAL_1,'xxx')
    FROM pt_ftp_information
    WHERE FTP_IND=:h_szftpind;
 EXEC SQL OPEN CURGetpt_ftp_information;
 while(true)
 {
  EXEC SQL FETCH CURGetpt_ftp_information
  into :h_szJobName,
  :h_szLocal_ftp_directory,
  :h_szLocal_backup_directory,
  :h_szRomote_ip,
  :h_szRemote_directory,
  :h_szFtp_account,
  :h_szFtp_password,
  :h_szAdditional_1;


  strcnpy(ofile_write.m_stFileDetailer.szJobName,h_szJobName.arr,h_szJobName.len);

  strncpy(ofile_write.m_stFileDetailer.szLocal_ftp_directory,h_szLocal_ftp_directory.arr,h_szLocal_ftp_directory.len);

  strncpy(ofile_write.m_stFileDetailer.szLocal_backup_directory,h_szLocal_backup_directory.arr,h_szLocal_backup_directory.len);

  strncpy(ofile_write.m_stFileDetailer.szRemote_ip,h_szRomote_ip.arr,h_szRomote_ip.len);

  strncpy(ofile_write.m_stFileDetailer.szRemote_directory,h_szRemote_directory.arr,h_szRemote_directory.len);

  strncpy(ofile_write.m_stFileDetailer.szFtp_account,h_szFtp_account.arr,h_szFtp_account.len);

  strncpy(ofile_write.m_stFileDetailer.szFtp_password,h_szFtp_password.arr,h_szFtp_password.len);

  strncpy(ofile_write.m_stFileDetailer.szAdditional_1,h_szAdditional_1.arr,h_szAdditional_1.len);

  ofile_write.writeDetailer();
  szicount++;

  if(isNotFound==true)
  {
   szicount--;
   EXEC SQL CLOSE CURGetpt_ftp_information;
   return false;
  }
  
  if(isError==true)
  {
   return false;
  }
 }
 return true;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值