Помогите, пожалуйста, решить такую проблему:
я пытаюсь получить информацию о выполняемом запросе, для этого пишу нечто подобное:
OCIStmtExecute(mysvchp, stmthp, myerrhp, 0,0,0,0,OCI_DESCRIBE_ONLY); //подготовка запроса
OCIAttrGet(stmthp, OCI_HTYPE_STMT, &numcols,0, OCI_ATTR_PARAM_COUNT, myerrhp); //число полей
for (int i=1; i<=numcols; i++)
{
OCIParamGet((dvoid*)stmthp, OCI_HTYPE_STMT, myerrhp, (dvoid**)&colhd, i); //дескриптор поля
OCIAttrGet((dvoid*)colhd, OCI_DTYPE_PARAM,(dvoid*)&coltype, 0,OCI_ATTR_DATA_TYPE, myerrhp); //тип поля
size = 255;
OraText* colname = new OraText[256];
loaded_OCIAttrGet((dvoid*)colhd, OCI_DTYPE_PARAM,(dvoid*)colname,&size,OCI_ATTR_NAME, myerrhp); //название поля
}
При этом название поля приходит в какой-то странной кодировке. Т.е. это явно оно — количество символов совпадает с оригиналом, но прочесть его невозможно.
В то же время значения, выбираемые из таблицы, приходят в нормальной кодировке.