Обсуждение: ODBC Error while selecting a numeric data field

Поиск
Список
Период
Сортировка

ODBC Error while selecting a numeric data field

От
"Tom Ince"
Дата:
I have tried PostgreSQL version 7.1.3 with iODBC-3.0.5

and

PostgreSQL version 7.2.1 with iODBC-3.0.6

and in both cases I get an error when attempting to do a select on a field
with the numeric data type.

Using the psql program I do the following :

CREATE TABLE test (lat numeric(9,6) );
INSERT INTO test VALUES (12.23);
SELECT * FROM test;

When I do the select in the psql program I get  :

    lat
----------
 12.230000
(1 row)


Now, I have an application attempting to perform the same SELECT statement
using the iODBC drivers SDK.
When calling SQLFetch with a SELECT statement attempting to pull data from a
field of type NUMERIC, I get
the error :

07006
Received an unsupported type from Postgres.


Please help....




Re: ODBC Error while selecting a numeric data field

От
"Tom Ince"
Дата:
Well, I have managed to get the ODBC SQL select call to work with the
NUMERIC database type.

In the Windows ODBC Help file there is a section called "Converting Data
from SQL to C Data Types"

In this section there is a chart which shows the default conversion for the
SQL_NUMERIC data type to
a C data type is SQL_C_CHAR.  So I made a stab and used that in my
SQLBindCol statement and it worked!

Here is my SQLBindCol statement that didn't work :
rc = SQLBindCol ( hstmt, i+1, SQL_C_NUMERIC, &fields[i].variant.f_numeric,
fields[i].size, &fields[i].length );

and here is the one that now works :
rc = SQLBindCol ( hstmt, i+1, SQL_C_CHAR, &fields[i].variant.f_char,
fields[i].size, &fields[i].length );

I am still a little curious as to why the original way did not work, if
anyone can point that out to me it would be
greatly appreciated...


"Tom Ince" <tom.ince@netzero.net> wrote in message
news:_CEX8.812$ak5.680@nwrddc01.gnilink.net...
> I have done a test and created the table with the field being a float
> instead
> of numeric and everything works fine.
>
> Any help please???
>
>
> "Tom Ince" <tom.ince@netzero.net> wrote in message
> news:OLCX8.718$ak5.93@nwrddc01.gnilink.net...
> > I have tried PostgreSQL version 7.1.3 with iODBC-3.0.5
> >
> > and
> >
> > PostgreSQL version 7.2.1 with iODBC-3.0.6
> >
> > and in both cases I get an error when attempting to do a select on a
field
> > with the numeric data type.
> >
> > Using the psql program I do the following :
> >
> > CREATE TABLE test (lat numeric(9,6) );
> > INSERT INTO test VALUES (12.23);
> > SELECT * FROM test;
> >
> > When I do the select in the psql program I get  :
> >
> >     lat
> > ----------
> >  12.230000
> > (1 row)
> >
> >
> > Now, I have an application attempting to perform the same SELECT
statement
> > using the iODBC drivers SDK.
> > When calling SQLFetch with a SELECT statement attempting to pull data
from
> a
> > field of type NUMERIC, I get
> > the error :
> >
> > 07006
> > Received an unsupported type from Postgres.
> >
> >
> > Please help....
> >
> >
> >
>
>



Re: ODBC Error while selecting a numeric data field

От
"Tom Ince"
Дата:
I have done a test and created the table with the field being a float
instead
of numeric and everything works fine.

Any help please???


"Tom Ince" <tom.ince@netzero.net> wrote in message
news:OLCX8.718$ak5.93@nwrddc01.gnilink.net...
> I have tried PostgreSQL version 7.1.3 with iODBC-3.0.5
>
> and
>
> PostgreSQL version 7.2.1 with iODBC-3.0.6
>
> and in both cases I get an error when attempting to do a select on a field
> with the numeric data type.
>
> Using the psql program I do the following :
>
> CREATE TABLE test (lat numeric(9,6) );
> INSERT INTO test VALUES (12.23);
> SELECT * FROM test;
>
> When I do the select in the psql program I get  :
>
>     lat
> ----------
>  12.230000
> (1 row)
>
>
> Now, I have an application attempting to perform the same SELECT statement
> using the iODBC drivers SDK.
> When calling SQLFetch with a SELECT statement attempting to pull data from
a
> field of type NUMERIC, I get
> the error :
>
> 07006
> Received an unsupported type from Postgres.
>
>
> Please help....
>
>
>



Re: ODBC Error while selecting a numeric data field

От
"Hiroshi Inoue"
Дата:
> -----Original Message-----
> From: Tom Ince
>
> Well, I have managed to get the ODBC SQL select call to work with the
> NUMERIC database type.
>
> In the Windows ODBC Help file there is a section called "Converting Data
> from SQL to C Data Types"
>
> In this section there is a chart which shows the default
> conversion for the
> SQL_NUMERIC data type to
> a C data type is SQL_C_CHAR.  So I made a stab and used that in my
> SQLBindCol statement and it worked!
>
> Here is my SQLBindCol statement that didn't work :
> rc = SQLBindCol ( hstmt, i+1, SQL_C_NUMERIC, &fields[i].variant.f_numeric,
> fields[i].size, &fields[i].length );
>
> and here is the one that now works :
> rc = SQLBindCol ( hstmt, i+1, SQL_C_CHAR, &fields[i].variant.f_char,
> fields[i].size, &fields[i].length );
>
> I am still a little curious as to why the original way did not work, if
> anyone can point that out to me it would be
> greatly appreciated...

SQL_C_NUMERIC is an ODBC3.X type.
Psqlodbc driver is ODBC2.50.

regards,
Hiroshi Inoue