0

我的数据库表中有一个类型和大小为 VARCHAR2<50> 的列。我在我的 CPP 代码中使用 getBlob() 方法来获取值。我面临以下异常。

例外:

ORA-01460: 请求的转换未实现或不合理

@line Blob blob = rset->getBlob(1);

代码:

    if(rset->next())
            {
                Blob blob = rset->getBlob(1);
                if(blob.isNull())
                    cout << "Null Blob" << endl;
                else
                {
                    blob.open (OCCI_LOB_READONLY);
                    int blobLength=blob.length();
                    Stream *instream = blob.getStream (1,0);
                    char *buffer = new char[blobLength];
                    memset (buffer, NULL, blobLength);
                    instream->readBuffer (buffer, blobLength);
                    for (int i = 0; i < size; ++i)
                    cout << (int) buffer[i];
                    cout << endl;
                    delete (buffer);
                    blob.closeStream (instream);
                }
                blob.close ();      
    }

请让我知道您的意见。谢谢。

PS:我检查了论坛并得到了同样例外的帖子,但找不到与我所面对的相关的内容。

4

1 回答 1

0

修改要使用的查询,utl_raw.cast_to_raw(col1)而不是简单地返回列。

尽管我想知道您是否最好使用普通的旧 VARCHAR2 而不是尝试像 BLOB 一样处理它。

于 2014-10-20T18:37:53.623 回答