OLE DB MONEY question
Posted in 2006
Topics: Data Types & Schema Design
This is somewhat a follow-up to my previous post
(http://groups.google.com/group/comp.databases.informix/browse_thread/thread/29a26f56c68a30fd)
I am having a problem with the MONEY data type.
I created a new database with one table:
create table "johnp".testtab1
(
testtab1id serial not null ,
testtab1col1 char(20),
testtab1col2 decimal(8,0),
testtab1col3 integer,
testtab1col4 date,
testtab1col5 datetime hour to minute,
testtab1col6 money(16,2)
);
select * from JANUSSTORES.mytestdb.johnp.testtab1 gives the following:OLE DB error trace [Non-interface error: Column 'testtab1col6'
(compile-time ordinal 7) of object '"mytestdb":"johnp"."testtab1"' was
reported to have a DBTYPE of 6 at compile time and 131 at run time].
Adding decasr8=R8 to the provider string changes the run time DBTYPE to
5 instead of 131. What am I missing here?
jprideaux wrote:
> This is somewhat a follow-up to my previous post
> (http://groups.google.com/group/comp.databases.informix/browse_thread/thread/29a26f56c68a30fd)
>
> I am having a problem with the MONEY data type.
>
> I created a new database with one table:
> create table "johnp".testtab1
> (
> testtab1id serial not null ,
> testtab1col1 char(20),
> testtab1col2 decimal(8,0),
> testtab1col3 integer,
> testtab1col4 date,
> testtab1col5 datetime hour to minute,
> testtab1col6 money(16,2)
> );
>
> select * from JANUSSTORES.mytestdb.johnp.testtab1 gives the following:> OLE DB error trace [Non-interface error: Column 'testtab1col6'
> (compile-time ordinal 7) of object '"mytestdb":"johnp"."testtab1"' was
> reported to have a DBTYPE of 6 at compile time and 131 at run time].
>
> Adding decasr8=R8 to the provider string changes the run time DBTYPE to
> 5 instead of 131. What am I missing here?
Hi,
My guess is that your missing a bug fix..
SQL Server seems inefficient to me; I've not got that engine figured
out. When you execute a query, it will request metadata about the
columns in the tables (why it does this comparison, I've not figured
out). After executing the query, if the metadata reported on the
returned column doesn't match what it previously gathered, you get the
error you describe.
The Informix OLEDB provider has had several bugs in this area... mostly
dealing with decimal data types.
First, please make sure that you've executed the coledb.sql script on
the database server your're connecting to. This script contains the
views and functions that OLEDB is giong to execute to get the metadata
about the columns in a table. If you are not sure if your views and
function are current, use the doledb.sql script to remove what the
coledb.sql does, and re-run the coledb.sql that comes with your latest
CSDK version.
If that suggestion doesn't resolve the problem... call Tech Support
and they'll have log an APAR and get you a fix.
Good Luck