Lỗi oracle odbc ora ora-01426 numeric overflow năm 2024

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSVSD8","label":"IBM Transformation Extender"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.4.1","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

I'd guess that you're doing some calculations in your SQL and that's causing the problem (dividing by zero, or some such thing). Bottom line - you need to identify the failing SQL - at the point it fails - and, therefore, the data values that are breaking your program.

Regards, Phill W.

Place into your code some sort of notification at the beginning and ending of each suspected SQL (that is, if you are having difficulty identifying which one fails). Then look carefully at what that SQL is attempting to do (trap the actual values of the SQL when it fails). I know I am just sort of repeating the good advice from from Phil, but wanted to make sure you understood how to ID a failing SQL (only ASSUMING you already don't know how---not to insult your intelligence). Of course, there are other ways of doing that as well (like error trapping the oracle error and notifying yourself via many different ways).

EDIT....because of your previous post, I guess you can disregard what I just sent above......(it was a late posting and didn't see yours first).


  • May 13th, 2014, 06:06 AM

    Lỗi oracle odbc ora ora-01426 numeric overflow năm 2024
    Thread Starter New Member
    Lỗi oracle odbc ora ora-01426 numeric overflow năm 2024


    Re: ora-01426 numeric overflow Sam,

    no offence taken, the updation of the field is taking place through a function was written by some other guy and that function is stored in some dll file as we do not have the definition for it so it is getting hard to track the sql as it is dumping the recordset into the database. and the value which i see in the rcordset is blank i.e "" nothing between the code. I am not able to replicate the issue with code so cant even track the actual place of issue.

But the issue is getting replicated by exe for the same code. at times it gives numeric overflow error but at other times it inserts a random large value into the field. The field is of Number type in the database. and inserting a blank may be cauing the error but it doesnt arise when i insert a blank from sql command directly onto the database. its happening through exe at runtime Any suggestions ?

-
  • May 13th, 2014, 06:16 AM

    Re: ora-01426 numeric overflow

    No.....never worked with sql code embedded in a dll....sorry. Does Oracle have a function to trap which query it received?

    - May 13th, 2014, 06:40 AM

    Re: ora-01426 numeric overflow

    Lỗi oracle odbc ora ora-01426 numeric overflow năm 2024
    Originally Posted by imdeasam

at times it gives numeric overflow error but at other times it inserts a random large value into the field.

i'd assume you get the error when one of that 'random large values' gets too big (or small) for the database field. I furthermore assume that a stray pointer in the dll is causing this. Sometimes it reads a value from RAM that is within the range of the database field (then you see that 'random large value'), sometimes it reads zero and sometimes it reads a value that is outside the range and your ORA error pops up.

If the dll is not under your control, i.e. you cannot debug and change that, then i guess you could come around this issue if you ensure that your recordset does not contain an empty string for that field. "0" should always work but this might not be what you want in the database. You could try 'NULL' as well.

If i am completely mistaking that, then please describe in more detail how the data is passed back an forth: you mention an access db, a recordset and a dll - i have not fully understood what steps are done and in what order. eg it could be: you code reads csv and inserts into mdb, another part of your code reads from mdb into recordset and passes the recordset to the dll which then loads it to your ora db (just my guess, could be completely wrong)


May 14th, 2014, 03:51 AM

Re: ora-01426 numeric overflow

... updation of the field is taking place through a function was written by some other guy and that function is stored in some dll file as we do not have the definition for it so it is getting hard to track the sql So you're running unknown code for which you don't even have the source code? That's a very Risky Place to be! ... the value which i see in the rcordset is blank i.e "" So a blank is being passed to some sort of arithmetic operation? Ouch. Could you "clean" the recordset before sending it for storage? Replace these blanks with, say, zeroes? ... at times it gives numeric overflow error but at other times it inserts a random large value into the field. Sounds like an ODBC oddity - they're never "Fun" to track down. I'd suggest a trace at the Oracle end of things to see what's actually being passed through - I've only scratched the surfaces with these, but I think this should get you somewhere close: