正在获取VARCHAR2类型列:ORA-01460:未实现或请求不合理的转换



我有一个类型和大小为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一样处理它。

最新更新