|
|
|
odescr в OCI и тип FLOAT
|
|||
|---|---|---|---|
|
#18+
Приветствую всех. если следующая проблема: программа написана на Visual C++ и работает с Oracle через OCI. После выполнения запроса с помощью функции odescr получается информация о полученных в результате запроса Select колонках. Колонка с результатом имеет тип FLOAT. Так вот odescr возвращает для этой колонки значение scale (число знаков после запятой) =0, что неверно. Я тут порылся в документации и нашел такую фразу о типе float : ..... A scale value is not applicable to floating point numbers ....." тоесть при задании типа я не могу задавать требуемую точность( например 3 знака после запятой). Но я так понимаю, что и при возвращении параметров колонки функцией odescr параметр scale просто игнорируется ... Так ли это ? Может кто сталкивался .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 18:35 |
|
||
|
odescr в OCI и тип FLOAT
|
|||
|---|---|---|---|
|
#18+
- 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); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 20:28 |
|
||
|
odescr в OCI и тип FLOAT
|
|||
|---|---|---|---|
|
#18+
мне не нужно устанавливать никаких параметров. есть результат sql запроса и не известно сколько колонок и какого типа он возвращает, поэтому используется функция odescr для "опознания" этих колонок. Но параметр scale для колонки float установлен в 0, хотя там лежит число в одним знаком после запятой... Может быть играет роль то, что эта колонка это результат выполнения SUM ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 11:11 |
|
||
|
odescr в OCI и тип FLOAT
|
|||
|---|---|---|---|
|
#18+
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 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 11:27 |
|
||
|
odescr в OCI и тип FLOAT
|
|||
|---|---|---|---|
|
#18+
Этот пример я уже смотрел.... Может быть я некорректно объяснил проблему, но у меня нет сложностей с вызовом и с получением информации о колонке . Меня интересует почему фунция возвращает scale = 0. У меня есть подозрения, что это происходит из за того , что это как бы не сама колонка, а результат суммирования, т.е: Select SUM (FIELD) from TABLE; Может быть в этом дело ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 12:08 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=429&tid=2034247]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 328ms |

| 0 / 0 |
