我有一个类型和大小为VARCHAR2<50>在我的数据库表中。我在CPP代码中使用getBlob()方法来获取值。我面临的例外如下。
异常:
ORA-01460:未实施或不合理的转换请求
@行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 ();
}
请告诉我你的意见。谢谢
附言:我已经查看了论坛,收到了同样的帖子,但没有发现与我所面临的相关。
修改查询以使用utl_raw.cast_to_raw(col1)
,而不是简单地返回列。
尽管我想知道您是否最好使用普通的旧VARCHAR2,而不是像BLOB一样处理它。