Page 1 of 1
Oracle ora-01455 converting column overflows integer dataty
Posted: 16.06.2009, 11:11
by yossarian
Hi!
I use ZEOS 6.6.3 and Oracle 10g. We have big integer fields in some table.
defined as NUMBER(15). When values in this fields are greater than maximum value of integer type I get this oracle error. I suspect Zeos use integer type for this fields instead of int64. I tried to check it in zeos source files, but it seems to be good. Can anybody tell me, what cause this problem ?
Thanks
Posted: 16.06.2009, 14:08
by mdaems
The error definitely comes from oracle (or the OCI interface) as it starts with ORA-xxx. Is it possible there's a limitation on the size of integers passed to the oci?
When I look (without debugging) at the variable bind code in ZDbcOracleUtils.LoadOracleVars it seems like a pointer to a longint (isn't that the same as integer?) field is filled. No idea how that behaves when going over the integer upper range limit or how it should be passed to the OCI anyway.
Mark
Posted: 17.06.2009, 09:33
by yossarian
I tested this situation with another database component named anydac and that handled this situation correctly. I created a table on an MS SQL server with bigint fields and i filled it with numbers greater than integer range limit and Zeos handle it correctly. So the problem must be in the Zeos oracle wrapper.
Yossarian
Posted: 17.06.2009, 09:44
by mdaems
I agree... but don't have an oracle installation ready for testing/building, which is why we removed Oracle from the list of actively supported databases. So we do hope the oracle users search for the solution to this kind of problems.
We can help answering general questions, but the oracle specific part is also unclear to us.
If you find a solution I will happily add the necessary changes to the official distributions however. When safe enough even backport to the 6.6 stable release.
Mark
Posted: 17.06.2009, 11:00
by yossarian
Thanks Mark!
There is a solution, but not too perfect for me. I have to convert this fields to character type with to_char() function.
Yossarian