If I create a table like this, then Oracle has no problems with the large integer and neither does ODAC.
Code: Select all
CREATE TABLE A_INT_TEST
(
COL1 NUMBER,
COL2 INTEGER
);
Insert into A_INT_TEST
(COL1, COL2)
Values
(3, 2147483648);
COMMIT;
Code: Select all
drop TABLE A_MSG_IN purge;
drop type T_ID_OBJ;
CREATE OR REPLACE TYPE T_ID_OBJ is object
( id integer,
id_type_id integer,
bu_id integer);
/
CREATE TABLE A_MSG_IN
(
COL1 NUMBER,
COL2 T_ID_OBJ
);
SET DEFINE OFF;
Insert into A_MSG_IN
(COL1, COL2)
Values
(1, T_ID_OBJ(1,2,3));
Insert into A_MSG_IN
(COL1, COL2)
Values
(2, T_ID_OBJ(2,2147483647,2147483647));
COMMIT;
Code: Select all
Insert into A_MSG_IN
(COL1, COL2)
Values
(3, T_ID_OBJ(4,2147483648,2147483648));
COMMIT;
It seems like a safe fix is to comment out lines 1199....1203 in OraObjects.pas, so that Attribute.Datatype is set to dtLargeInt instead of dtInteger in TOraType.DescribeAttribute.
Is that safe?
Thank you.