免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1889 | 回复: 1
打印 上一主题 下一主题

挑战高手,各位请试一下解决这个问题!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-16 15:02 |只看该作者 |倒序浏览
long lLength = 256 * 256;
char *pBuf = new char[ lLength ];
memset( pBuf, 0, lLength );

// stream write
long lOffset = 0;
ub4 lAmtp1 = lLength * 100;
for( long i = 0; i < 100; i ++ )
{
        ub1 piece = OCI_NEXT_PIECE;
        if( i == 0 )
        {
            piece = OCI_FIRST_PIECE;
        }
        else if( i == 99 )
        {
            piece = OCI_LAST_PIECE;
        }
        st = cBase.WriteBLOB(
                (char *)pBuf,
                lLength,
                &lAmtp1,
                lOffset,
                cTab.TDData,   //一个表中查询出来的BLOB字段的lob定位符
                piece);

        st = cBase.WriteBLOB(
                (char *)pBuf,
                lLength,
                &lAmtp1,
                lOffset,
                cTab2.TDData, //另一个表中查询出来的BLOB字段的lob定位符
                piece
                );

        if( ( st != OCI_NEED_DATA ) && ( st != OCI_SUCCESS ) )
        {
                printf( "Write Tile To DB Error!\n" );
        }
}
/////////////////////////////////////////////////////
出现ORA-24810错误:正在尝试写入多于指定的数据
和  ORA-24811错误:提供写入的数据少于指定的数据
/////////////////////////////////////////////////////

但是循环改为如下:
for( long i = 0; i < 100; i ++ )
{
        ub1 piece = OCI_NEXT_PIECE;
        if( i == 0 )
        {
            piece = OCI_FIRST_PIECE;
        }
        else if( i == 99 )
        {
            piece = OCI_LAST_PIECE;
        }
        st = cBase.WriteBLOB(
                (char *)pBuf,
                lLength,
                &lAmtp1,
                lOffset,
                cTab.TDData,   //一个表中查询出来的BLOB字段的lob定位符
                piece);
        if( ( st != OCI_NEED_DATA ) && ( st != OCI_SUCCESS ) )
        {
                printf( "Write Tile To DB Error!\n" );
        }
}
for( long i = 0; i < 100; i ++ )
{
        ub1 piece = OCI_NEXT_PIECE;
        if( i == 0 )
        {
            piece = OCI_FIRST_PIECE;
        }
        else if( i == 99 )
        {
            piece = OCI_LAST_PIECE;
        }
        st = cBase.WriteBLOB(
                (char *)pBuf,
                lLength,
                &lAmtp1,
                lOffset,
                cTab2.TDData, //另一个表中查询出来的BLOB字段的lob定位符
                piece
                );

        if( ( st != OCI_NEED_DATA ) && ( st != OCI_SUCCESS ) )
        {
                printf( "Write Tile To DB Error!\n" );
        }
}

就不会发生任何错误,请问这究竟事什么原因,请各位高手指条明路,在下感激
不尽,谢谢!

论坛徽章:
0
2 [报告]
发表于 2003-11-18 15:43 |只看该作者

挑战高手,各位请试一下解决这个问题!!

等了这么些天也没人回答,到底有没有OCI高手啊,是高手的就请快快出手吧,拉哥们一把,谢了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP