Proc*c 游标的使用

本文你主要讲述动态游标以及Blob类型的数据转换为Char类型的应用。

动态游标主要应用在表名,列名不确定的情况。

假设name 的类型为Blob 类型。那么取出时临时保存到Blob 空间需要先 EXEC SQL ALLOCATE blob开辟空间。

1.首先拼接字符串语句。

    sprintf(sql,"select name,id from %s m where 条件");

2. EXEC SQL PREPARE sel FROM :sql;准备语句。

3. EXEC SQL DECLARE cur_use CURSOR FOR sel; 声明游标

4.EXEC SQL OPEN cur_use; 打开游标

WHILE(1)

{

        EXEC SQL FETCH cur_use into:blob ,id;循环取出数据保存到blob,以及id 类型中。

        if (sqlca.sqlcode ==1403) 为空时跳出循环。

            break;

    当blob类型过长时,需要循环转换BLob类型到char类型内,

 EXEC SQL LOB DESCRIBE :blob GET LENGTH INFO:_len;

offset =1;

index =0;

        for(;;){

               if(_len -offset <LENGTH)blob_len =amount =_len-offset;

                else blob_len =amount =LENGTH;

              EXEC SQL LOB READ:blob_len FROM :blob AT:offset INTO:buf;//保存到buf里,需要将buf转换为EXEC SQL VAR buf is LONG RAW(LENGTH);

             memcpy(bbuf+index,buf,strlen(buf));

             if (_len <offset) break;

             offset =offset+amount;

            index =index+strlen(buf);

        }       

}

完成以后关闭游标。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值