Catch the live ORA-01438 / value larger than specified precision allowed for

I have an another question! Is it possible to intercept the error ORA-01438 immediately before that the user sends data?
I have a db column that is used to store numbers of length 3.0. When you enter the 4 digits, the ORA-01438 is triggered.
The Apexlib does not work, since I have some conditional regions on the page in question.

Thanks for posting your thoughts and advice.

Kind regards

SEB

SEB,

Simply create a validation and check the length of user input.

brgds,
Peter

-----
Blog: http://www.oracle-and-apex.com
ApexLib: http://apexlib.oracleapex.info
Work: http://www.click-click.at
Training: http://www.click-click.at/apex-4-0-workshops

Tags: Database

Similar Questions

  • While import is ORA-01438: value larger than specified precision error

    Hello

    I get these errors on a few tables when performing an import of tables selected in a diagram. Here's one of them:
    ++++++++++++++++++++++++++++++++++++++++++++++++++++
    . . importing table "CHARGE_DISTRIBUTE".
    IMP-00058: ORACLE error 1438
    ORA-01438: value larger than the precision specified for the column
    IMP-00028: partial import of the restored previous table: 17055 restored lines
    . . import of partition 'CM1_AGREEMENT_PARAM': 'AMAXVALUE' 327559 imported lines
    ++++++++++++++++++++++++++++++++++++++++++++++++++++

    How to find out on which column the problem occurs?

    Oracle version: 10.2.0.3.0
    OS: SunOs

    See you soon,.
    Malika

    Hello

    As you can see from the following link error ORA-01438 is generally linked to a numeric column:

    http://www.error-code.org.UK/view.asp?e=Oracle-ora-01438

    So you might get a description of the Table:

    desc CHARGE_DISTRIBUTE;
    

    The offending column is probably one with a NUMBER data type.

    Next to the notice already posted, you can compare the data type of the columns in the Source and the target Table.

    Hope this helps.
    Best regards
    Jean Valentine

  • ORA-01438: value larger than the precision specified for this column?

    Hi guys:

    I'm stuck in this error when I try to do an insert into a table. My Source has 581K records, but only this code and the values described below gives me a headache.

    Here's the DDL for the source and the target.

    CREATE TABLE WRK. VL_FREED
    ('CODE' VARCHAR2 (9))
    NUMBER (15.7) "VL_FREED".
    )

    CREATE TABLE WRK. VL_RENEG
    ('CODE' VARCHAR2 (9))
    NUMBER (15.7) "VL_RENEG".
    )

    CREATE TABLE WRK. WRK_XPTO
    ('CODE' VARCHAR2 (9))
    NUMBER (15,10) "VL_XPTO".
    )

    ------------------------------------------------
    The values for the VL_FREED AND VL_RENEG tables:


    CODE = 458330728 (same on both)
    VL_FREED = 191245.3000000
    VL_RENEG = 74095.3800000

    -------------------------------------------------

    When I try to run this insert:

    INSERT INTO WRK. WRK_XPTO
    (
    CODE,
    VL_XPTO
    )
    Select
    T1. CODE,
    T1. VL_FREED - T2. VL_RENEG
    of WRK. VL_FREED T1, WRK. VL_RENEG T2
    WHERE
    (T1. CD_CODE = T2. CODE);

    I got the error:
    ORA-01438: value larger than the precision specified for the column

    But how can this be? The result of 191245.3000000 - 74095.3800000 is not greater than a number (15,10).

    Can someone help me on this?

    Number (15,10) means 15 total digits, 10 of which are to the right of the decimal separator, leaving only 5 on the left.

    190 000 - 75 000 = 115 000 (6 digits).

  • ORA-01438: value larger than the precision specified for the column '

    When inserting the different entries of cheaper products in this table PF_PRODUCT_VIEWS_PROFILE, I'm having this problem of "java.sql.SQLException: ORA-01438: value larger than the precision specified for the column '.»


    As I see it in the tables (desc pf4. PF_PRODUCT_VIEWS_PROFILE; & PFCA4 of ESCR. DCS_PRICE_LEVEL;), I see the accuracy for the price of the table PF_PRODUCT_VIEWS_PROFILE as NUMBER (12.7) & accuracy for the price of the table DCS_PRICE_LEVEL as NUMBER (19.7). There is therefore a difference in precision 7 units for the price in the PF_PRODUCT_VIEWS_PROFILE table that is causing this problem. So that would be the solution.


    Could you please post my comments, so that I can change the accuracy for the price of the PF_PRODUCT_VIEWS_PROFILE table.
    Need to confirm other columns in the table PF_PRODUCT_VIEWS_PROFILE does not exceed their precision values before making this change.

    Hello

    Ideally avoid data loss as you increase the length of the column as it really is. You have to worry about this in the case if you reduce the length. It is always better to be doubly sure, so also check other tables.

    see you soon

    VT

  • ODI 12 C | Error ORA-01438: value larger than the precision specified for the column

    I keep getting this error when trying to load an XML file exchange rates in a table of data warehouse. I defined the type of XML data model to NUMBER (18,15), identical to the target and it works for rates with an accuracy of 1, then when the transformed with an accuracy of 4 it generates this error. This was really frustrating... There must be somewhere a temporary table created with precision different, right? Any help with this would be appreciated.

    The example data:

    Result of currency rates

    1.4454325324 COL AUD

    1.3943435826 CAD PASS

    8.9824929424 COL CNY

    4326.4323456123 COP FAIL

    You seem to be confused with the terminology you use here. The precision is the total number of digits allowed in your number in your definition, i.e. NUMBER (18,15), precision 18, which means that you can have up to 18 digits in your number. However, you have also defined a scale value of 15 that denotes the amount of numbers that are sitting to the right of the decimal point. This means that you have only allowed for the 3 digits to sit to the left of the decimal point that is precision - scale (18-15). That's why you get the error when you try and load the COP currency that your definition of data type does not support having more than 3 digits left of the decimal separator.

  • Operating system of the virtual machine attempted to activate the adapter Ethernet0 promiscuous mode. This is not allowed for security reasons.

    Hi all

    When I start my vm I get error

    "Operating system of the virtual machine attempted to activate the adapter Ethernet0 promiscuous mode. This is not allowed for security reasons. »

    I have been to this page http://KB.VMware.com/selfservice/microsites/search.do?language=en_US & cmd = displayKC & externalId = 287

    From this page, on my webhost, I created a group called "vmware-vmnet0", then I add the user running vmware to this group.  I can give this rw on/dev/vmnet0 group permissions

    However, I still get the same error above on starting the virtual machine each time.  How can I solve this terrible problem.

    Thank you.

    Device nodes are re-created at boot time.  You can thank Linux udev.  To work around this problem, create the vmnet devices * with the ownership and the permissions you want under/lib/udev/devices.

  • substituted the SQLNET.ora parameter value

    Hello

    In my value sqlnet.ora is written twice. Its production.
    SQLNET.AUTHENTICATION_SERVICES= (NTS)
    
    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
    tcp.validnode_checking = yes
    tcp.invited_nodes = (localhost,,172.168.255.12)
    
    
    #### Attributes from protocol.ora ####
    
    tcp.validnode_checking = no
    tcp.invited_nodes = (localhost,172.168.255.12)
    My question is "what is the value has been set. Yes/No ".

    TCP.validnode_checking = Yes OR no

    How to see what value is made by net sql

    Thanks in advance

    In my view, .ora files will use everything he finds the last, but I agree with the comment on the test.

    I say that because I remember hair long tear because my changes a tnsnames.ora were ignored. Finally, I figured out that I was not scroll down far enough to see the duplicate entry. Oh!

  • Catch the range of Date values

    Hi, guys.

    I need to check the date range that my product was available. You can use as a basis the values in the table below, but this structure can be modified to add all the things that could support the solution:

    ID_PRDCT DT_STRT DT_END
    1 20/01/25 12/01/12
    1 01/23/12-27/01/12
    1 26/01/30 12/01/12
    1 28/01/12-21/04/12
    1 20/04/12-25/05/12
    1 24/05/12-28/05/12
    1 26/05/12 05/29/12
    1 01/07/12-03/08/12
    1 01/08/12-16/08/12
    1 18/08/12-30/08/12
    1 01/12/12-31/12/12

    In this case, the result of my date range should be:

    1 20/01/12-29/05/12
    1 01/07/12-16/08/12
    1 18/08/12-30/08/12
    1 01/12/12-31/12/12

    Hello

    An the Heres how:

    WITH     got_new_grp          AS
    (
         SELECT     id_prdct, dt_strt, dt_end
         ,     CASE
                  WHEN  dt_strt <= MAX (dt_end)
                            OVER ( PARTITION BY  id_prdct
                                   ORDER BY      dt_strt
                             ROWS BETWEEN  UNBOUNDED PRECEDING
                                    AND      1          PRECEDING
                           )
                  THEN  0
                  ELSE  1
              END     AS new_grp
         FROM    t
    )
    ,     got_grp          AS
    (
         SELECT     id_prdct, dt_strt, dt_end
         ,     SUM (new_grp) OVER ( PARTITION BY  id_prdct
                                       ORDER BY          dt_strt
                           )         AS grp
         FROM    got_new_grp
    )
    SELECT       id_prdct
    ,       MIN (dt_strt)     AS grp_dt_strt
    ,       MAX (dt_end)     AS grp_dt_end
    FROM       got_grp
    GROUP BY  id_prdct
    ,            grp
    ORDER BY  id_prdct
    ,            grp
    ;
    

    This assumes dt_strt<= dt_end="" on="" every="">
    If you would care to post CREATE TABLE and INSERT statements for your sample data, then I could test it.

    You cannot use LAG or LEAD to see where each new group starts, because the order of the dt_strt is not the same as the order of the dt_end. In other words, if you ORDER BY dt_strt, two adjacent lines could be in the same group regardless of their values, because a previous line can have a dt_end, and as a result this line would be overlapp both of them. Similarly, if you ORDER BY dt_end, no matter what two adjacent lines contain, whether they are in the same group if som rank later has a sufficient dt_strt in advance.

  • The video screen that is larger than the default size

    Hello world
    I m having dificults to change the size of the size of the video object, because its pixelated. Its the same effect when I zoom the scene.
    The default value of the video object is 160 x 120.
    I ve value = 320 mycam._width and so on...
    but Pixelize...
    Any help is valid
    Thank you

    MyCam = camera.get(2) ();
    mycam.setMode (320, 240, 15); 320 x 240 video at 15 frames per second

  • Migration of Time Machine to the new drive, backups are larger than the Original drive

    I am currently migrating my Time Machine backups from a 2 TB WD My Passport for Mac to a new WD 6 to my book for Mac. I have 63 backups on the old disk, and Finder says that the reader has TB filled 1.96.

    However, each individual backup is about 350 GB, which certainly does not. I think normally it was something weird with the Finder listing the wrong sizes, except that when I copy the backups to the new disk, they copy effectively to 350GB a piece. I initially tried to copy everything the ~ 2 TB Backups.backupdb at once, but it was so great, she didn't, then I copy on each both a backup in a folder that I had planned to rename "Backups.backupdb" at the end. At this rate, I will fill new TB cases 6 drive long before copying all backups on.

    How is that possible?

    Just to be complete, I'm using a Macbook Pro of the retina 2012, 2.6 GHz Intel Core i7, 16 GB 1600 MHz DDR3 graphics card Intel HD 4000 1536 MB, 512 GB of storage, under OS X 10.11.3.

    Time Machine saves the previous backups for the continuous backup size to become more wider until there is no more space on the backup drive. It is quite normal because Time Machine is an archive backup utility.

  • in 22 and 23.0 upgrate him disappears from the bookmarks toolbar and after crash firefox does not allow for recovery

    I hate this new update. I basically can't use the browser more. I only need firefox to do things properly, but if she cannot do these things I can't use it

    1. If firefox crashes (it does every 30 minutes it completely closed), then I need to be able to restore / recover all previously open windows when I start it back up again. There is no more.

    2. I use the bookmarks toolbar all the time, but often it appears completely blank. So now, the only way I can see bookmarks is if I go to options and uncheck bookmarks toolbar option and reselect then toolbar of bookmarks.

    It's so frustrating and worse still make you sure you can't do restorations! It of insulting and makes me want to not use your browser. A browser is a tool not criticizing a toy, but you guys will not stop playing with it.

    Also, older versions of the extension, meet bugs, you can refresh by using:

    Firefox orange (or the Tools menu) button > Add ons > "gear" button > "Check for Updates".

    For example, GM 1.5 (November 2012) vs GM 1.11 (July 2013).

  • Error ORA-01438 management value

    Hello

    I wonder if anyone can offer advice on the following problem.

    I have a PL/SQL package as a batch processing which is the insertion of the hundreds of lines in about eight different tables. For various reasons, the data invalid seeps fairly regularly.

    The main issue is trying to insert numbers into a column that is defined as number (7.2) where data is too big, of course, this will raise the error:

    ORA-01438: value larger than the precision specified for the column*.

    Now what I want to do is to record the details of the line that caused the error, but I can't catch it in the exception handler.

    I tried to use When Value_Error but this error does not fall to this Manager, it falls to when other instead.

    So, what should I do to intercept and manage this particular error?

    Also to note - I don't want to change the table definition to allow these platelets because its data not valid and I don't really want to do the logical tests on each variable before inserting it because there are hundreds of them, ideally, I want to just try the insert, fail, and then catch it.

    Thanks in advance for any answer!

    (Oracle 10g R2 / Sun OS)

    Hello

    If you already have infrastructure in place exception logging, you can use PRAGMA EXCEPTION_INIT to link to this specific exception...

    XXXX> create table dt_prec
      2  (   id  number(1)
      3  )
      4  /
    
    Table created.
    
    Elapsed: 00:00:00.06
    XXXX> DECLARE
      2
      3  BEGIN
      4
      5      insert into dt_prec values(100);
      6
      7  END;
      8  /
    DECLARE
    *
    ERROR at line 1:
    ORA-01438: value larger than specified precision allowed for this column
    ORA-06512: at line 5
    
    Elapsed: 00:00:00.03
    XXXX> DECLARE
      2
      3      ln_ExNumericPrecision   EXCEPTION;
      4
      5      PRAGMA EXCEPTION_INIT(ln_ExNumericPrecision,-1438);
      6
      7  BEGIN
      8
      9      insert into dt_prec values(100);
     10
     11  EXCEPTION
     12      WHEN ln_ExNumericPrecision THEN
     13          dbms_output.put_line('Caught ORA-01438');
     14      WHEN OTHERS THEN
     15          dbms_output.put_line('When others ');
     16  END;
     17  /
    Caught ORA-01438
    
    PL/SQL procedure successfully completed.
    

    HTH

    David

  • ORA-01438: how to find the name of the column?

    Hello

    I'm trying to find the column which is causing ORA-01438 when inserting into a table.

    The insertion is made by a C program that reads from a socket and written in an oracle 10 g database using Oracle Pro * C.

    I tried to identify the column by printing the values (about 250) just before the insert statement is executed, but check these values has been a task heavy and error prone and did not help to correct the mistake (I found a bunch of values which out of reach, but changing these values has not resolved the issue).

    Abandon this idea, I tried to track the session to help
    (1) DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION,
    (2) DBMS_MONITOR.session_trace_enable/disable and still
    (3) change the context name system set events 10046 trace forever, level 12' and;
    (4) alter system set sql_trace = true scope = mΘmoire;

    DBMS_MONITOR.session_trace_enable only gave me a few tips (the insert statement) in a trace file. But it worked for a simple example of a test database.

    When I try to turn on tracing on the database, where the error occurs, then I'm still not able to set SQL_TRACE in V$ SESSION true, even if no error is returned by the statement "DBMS_MONITOR.session_trace_enable". The value of SQL_TRACE in V$ SESSION does not change and I have no idea why. On the test database, it works fine and I can find the trace file in the user_dump_destination directory.

    Anyone have any suggestions on how to fix this?

    Any help is appreciated.
    Thanks in advance!

    Just check this:

    SQL > conn osama/osama ;
    SQL> create table test as select * from scott.dept ;
    
    SQL> select * from test ;
    
        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
    
    SQL> alter system set events='1438 trace name Errorstack forever,level 10';
    
    SQL> insert into test values (100000000000000000,'osama','JOR');
    insert into test values (100000000000000000,'osama','JOR')
                             *
    ERROR at line 1:
    ORA-01438: value larger than specified precision allowed for this column
    
    In Trace File :
    
    ORA-01438: value larger than specified precision allowed for this column
    Current SQL statement for this session:
    insert into test values (100000000000000000,'osama','JOR')
    
  • Error ORA-01438

    Hello
    I got the following error when you insert a row in my table
    ORA-01438: value larger than the precision specified for the column

    I use oracle 10g, it does not give me the name of column


    Can someone help me on this. It seems that I'm not insert more than the limit allowed for all columns
    My insert statement
    Insert in the placement values (76, 24 June 2010 ', 28 'NIT', 1, 'BLK', null, 'ROLL ON TRANSACTION', 5787134.1139, 10.3427, 59854592.000);


    Here is the description of my table

    Table column Data Type length balance precision
    Investment CODE number - 3-0
    INV_DATE Date - 7
    Number of INV_FND_CODE - 3-0
    INV_FND_NAME Varchar2 30-
    Number of INV_CO_CODE - 3-0
    INV_CO_NAME Varchar2 30-
    INV_DIST_NAME Varchar2 30-
    INV_REMARKS Varchar2 - 40
    INV_NOFU number - 4 of 10
    INV_UPRICE number - 4 of 10
    INV_AMOUNT number - 3 of 10



    Thank you

    The problem is most likely in the column named, INV_NOFU. It has a precision of 10, but you tried to insert a value of 11 digits.

    Simple example:

    SQL> CREATE TABLE t(n NUMBER(10,4));
    
    Table created.
    
    SQL> INSERT INTO t VALUES(5787134.1139);
    INSERT INTO t VALUES(5787134.1139)
                         *
    ERROR at line 1:
    ORA-01438: value larger than specified precision allowed for this column
    
  • ORA-12899: value too large for column 'FLOWS_FILES '. ' WWV_FLOW_FILE_OBJECTS$

    Try to download a .docx, get the following:

    ORA-12899: value too large for column 'FLOWS_FILES '. «WWV_FLOW_FILE_OBJECTS$ '.» "" Mime_type "(real: 71, maximum: 48)

    Course description WWV_FLOW_FILE_OBJECTS$, MIME_TYPE is declared as varchar2 (48).

    The problem is that the Content-Type for a .docx file is "application/vnd.openxmlformats-officedocument.wordprocessingml.document.

    What is the best way to solve this problem?

    Easy solution?

    Change the Table of $ WWV_FLOW_FILE_OBJECT and widen the column.

    Or change your dads.conf file (if you are using mod_plsql) and specify a different table to PlsqlDocumentTablename.

    brgds,
    Peter

    -----
    Blog: http://www.oracle-and-apex.com
    ApexLib: http://apexlib.oracleapex.info
    Work: http://www.click-click.at
    Training: http://www.click-click.at/apex-4-0-workshops

Maybe you are looking for