2008. szeptember 1., hétfő

Migration InterBase 5.5 to 6.0


Problem/Question/Abstract:

A certain stored procedure caused me to get this error message:

ISC ERROR CODE: 335544321

ISC ERROR MESSAGE:
arithmetic exception, numeric overflow, or string truncation

Answer:

I found that a variable of type char(18) was assigned to another variable of type char(10). Since the data was never (?) longer than 8 characters, this worked fine up to version 5.5. Seems that IB 6.0 handles strings different. It is likely that a delcaration as VARCHAR instead of CHAR would help also. (See part 1 below)

Another necessary change was a type cast where IB 5.5 did an implicit conversion.


// part 1
declare variable v1 char(10);
declare variable v2 char(18);
..
v1 = v2; // generates the error in IB 6.0

// part 2
declare variable vchardate char(18);
declare variable vdatedate date;

vchardate = '1996-Jan-15';
vdatedate = vchardate; // generates error in IB 6.0

vdatedate = cast(vchardate as DATE);

Nincsenek megjegyzések:

Megjegyzés küldése