powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / odescr в OCI и тип FLOAT
5 сообщений из 5, страница 1 из 1
odescr в OCI и тип FLOAT
    #32739265
titan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех.

если следующая проблема: программа написана на Visual C++ и работает с Oracle через OCI.
После выполнения запроса с помощью функции odescr получается информация о полученных в результате запроса Select колонках.
Колонка с результатом имеет тип FLOAT. Так вот odescr возвращает для этой колонки значение scale (число знаков после запятой) =0, что неверно.
Я тут порылся в документации и нашел такую фразу о типе float :
..... A scale value is not applicable to floating point numbers ....."
тоесть при задании типа я не могу задавать требуемую точность( например 3 знака после запятой).
Но я так понимаю, что и при возвращении параметров колонки функцией
odescr параметр scale просто игнорируется ...
Так ли это ? Может кто сталкивался ....
...
Рейтинг: 0 / 0
odescr в OCI и тип FLOAT
    #32739400
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- dlia zadania tipa parametra dlea float:
void xxx::setFloat(const char *name, float &_val ) throw ( SQLException )
{
bind = NULL;
OCIBindByName(stmthp, &bind, errhp, (text *) name, strlen(name), (dvoid *) &_val, sizeof( _val ), SQLT_FLT, (dvoid *) 0, (ub2 *) 0, (ub2*) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);
}

- dlia zadania tipa rezulitiruiuscih dannih dlea float:
void xxx::defineFloat ( float & _val ) throw ( SQLException )
{
OCIDefineByPos(stmthp, &define, errhp, definePos, (dvoid *) &_val, (sword) sizeof(_val), SQLT_FLT, (dvoid *) 0, (ub2 *)0, (ub2 *)0, OCI_DEFAULT);
}
...
Рейтинг: 0 / 0
odescr в OCI и тип FLOAT
    #32739934
titan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне не нужно устанавливать никаких параметров.
есть результат sql запроса и не известно сколько колонок и какого типа он возвращает, поэтому используется функция odescr для "опознания" этих колонок. Но параметр scale для колонки float установлен в 0, хотя там лежит число в одним знаком после запятой...
Может быть играет роль то, что эта колонка это результат выполнения SUM ?
...
Рейтинг: 0 / 0
odescr в OCI и тип FLOAT
    #32739981
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
posmotri primer oci23.c tam vivoditsea informatia SQL zaprosa.
da i priciom tut float togda ia ne ponel,
ti doljen analizirovati tip kotorii vozvrasciaet Oracle (v tvoiom slucae doljen smotreti esli number i kakoi u nego razmer precision i u sootvetstvenno skale).
ti sam doljen opredeliti pomestitsea on v odin float ili net ...

mojet on voobsce u tebea ne vozvrasciaet number ...
...
Рейтинг: 0 / 0
odescr в OCI и тип FLOAT
    #32740113
titan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот пример я уже смотрел....
Может быть я некорректно объяснил проблему, но у меня нет сложностей с вызовом и с получением информации о колонке .
Меня интересует почему фунция возвращает scale = 0.
У меня есть подозрения, что это происходит из за того , что это как бы не сама колонка, а результат суммирования, т.е:
Select SUM (FIELD) from TABLE;

Может быть в этом дело .....
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / odescr в OCI и тип FLOAT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]