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

时间:2014-10-20 10:53:29

标签: c++ sql oracle occi

我有一个类型和大小为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:我已经检查了论坛,并且发布了相同的例外,但找不到我所面对的内容。

1 个答案:

答案 0 :(得分:0)

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

虽然我想知道你是否会更好地使用普通的旧VARCHAR2,而不是试图像BLOB那样处理它。