Validation of numeric value precision and scale

Hi all,
Iam using ADF with EJBs.
I have one inputText field that will accept numeric values (of java.lang.Double type). Due to database constraints I want to validate the input value on its precision and scale.
I put an f:convertNumber tag under the inputText and set the MaxIntegerDigits and MaxFractionDigits properties with the desired values.
I also set the ApplyValidation property of the corresponding attribute in the pagedef file. However no validation worked.
I made the same test with af:ConvertNumber with no result too.
I know that with BC4J it is easy to set such constraints at the entity level.
Is there any neat way to set validation or I need to write code in the backing bean?

<af:convertNumber> works fine for me. see the following code
<af:inputText id="it1">
<af:convertNumber type="number" minFractionDigits="2" maxIntegerDigits="4" maxFractionDigits="2"/>
</af:inputText>
Another possible solution with regular expression
<af:inputText id="it3" value="9999.99">
<af:validateRegExp pattern="\[0-9\]\[0-9\]\[0-9\]\[0-9\].\[0-9\]\[0-9\]"/>
</af:inputText>
regards
srini
Edited by: sangara on Jan 17, 2010 9:53 PM

Similar Messages

  • Precision and scale for numeric datatypes

    Could be in XSU, could be in Oracle thin driver, but I'd expect the SAL column of the EMP table to include its precision and scale, e.g. 800.00 and not 800.
    oracle: decribe EMP
    NAME TYPE
    SAL NUMBER(7,2)
    sql server: sp_help EMP
    Column_name Type Length Prec Scale
    SAL numeric 5 7 2
    sql server:
    java myOracleXML getXML -conn "jdbc:inetdae7:aetius:1433?database=Northwind" -user "sa/sa" "select SAL from EMP where EMPNO > 7999"
    <?xml version = '1.0'?>
    <ROWSET>
    <ROW num="1">
    <SAL>800.00</SAL>
    </ROW>
    </ROWSET>
    oracle:
    java OracleXML getXML -user "scott/tiger" "select sal from
    emp where empno > 7999"
    <?xml version = '1.0'?>
    <ROWSET>
    <ROW num="1">
    <SAL>800</SAL>
    </ROW>
    </ROWSET>
    So who loses the scale in the Oracle case, the driver or XSU.
    Steve.

    user4928701 wrote:
    Specifying precision and scale in the datatype when creating a procedure does not work:
    create or replace function SqlTxFunctionTesting(inparam in number(9,2)
    Error(1,48): PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue.
    And one of the cons in the PL/SQL language in my view.
    The language does not allow parameters to be declared in the fashion you are attempting to. Even declaring a subtype and using that, does not enforce either the precision or scale, on the parameter value passed.
    Even worse - the parameter value can be a different data type all together from the defined parameter type - and a silent and implicit data type conversion will be done at run-time.
    So you can expect run-time errors in your code unit caused by the caller passing invalid values, despite the compiler okaying the call from the caller to your code.
    There are pros and cons to this approach. But if you are from a very strong type language environment like C or Pascal, you tend to see more cons than pros in this specific case.

  • Precision and Scale

    I am creating some application tables with APEX. When i define a column on my table for primary or foreign keys I select the NUMERIC datatype. The form then prompts me for Precision and Scale. What are the recommended values for precisions and scale for key columns? I understand that precision is the total number of digits before and after the radix but what is meant by scale - the number of digits after the radix? I'm a little rusty on these issues as it has been a long time since I used them.
    Thanks, Ned

    Hi
    Just to add to this (definitions spot on though as Paul pointed out)...
    'NUMERIC' is not an Oracle datatype. The datatype is NUMBER. Oracle supports NUMERIC in a create statement but it is stored as NUMBER under the hood.
    Using precision and scale definitions is not necessary, you can define number just on it's own and it will handle what you throw into it. The design consideration comes into exactly what you are going to use the field for.
    I came across a situation where a company were creating their administration system (and this was a reasonably large company with some very important data) and had decided to use NUMBER(9) for the PK ID column on all their major tables. Sure enough, 10 years later this started to cause a problem cause the were running out of numbers! (okay, this is no big deal to fix but it's just an example). The reasoning had originally been because Oracle Forms defaulted the display field length to that in the data dictionary it would save them the effort of changing it manually every time they created a new form!
    I generally define NUMBER as NUMBER unless there is a valid rule to say that it is and always be something that can be defined. For example monetary amounts - Japanese Yen can't have decimals so it should be held in a NUMBER (10,2) field (although lots of people do this for their 'amount' columns anyway). The data rules.
    Cheers
    Ben
    http://www.munkyben.wordpress.com
    Don't forget to mark replies helpful or correct ;)
    Edited by: Munky on Aug 19, 2009 8:01 AM

  • What is the point of Precision and Scale in Number Type?

    Version :11.2
    What is the point in having PRECISION and SCALE in number type? If you create the column with just NUMBER ie.without
    specifying precision or scale , you can enter numbers with any precision and scale.
    SQL> select * From v$version where rownum < 2;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    SQL> create table t1 (col1 number);
    Table created.
    SQL> insert into t1 values (223.9939394);
    1 row created.
    SQL> insert into t1 values (88.228384);
    1 row created.
    SQL> insert into t1 values (9.34);
    1 row created.
    SQL> insert into t1 values (000.00);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> select * from t1;
          COL1
    223.993939
    88.228384
          9.34
             0Did you ever have a business scenario where a Numerical column should store values only with a fixed precision and scale ?

    Omega3 wrote:
    Version :11.2
    What is the point in having PRECISION and SCALE in number type? If you create the column with just NUMBER ie.without
    specifying precision or scale , you can enter numbers with any precision and scale.
    SQL> select * From v$version where rownum < 2;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    SQL> create table t1 (col1 number);
    Table created.
    SQL> insert into t1 values (223.9939394);
    1 row created.
    SQL> insert into t1 values (88.228384);
    1 row created.
    SQL> insert into t1 values (9.34);
    1 row created.
    SQL> insert into t1 values (000.00);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> select * from t1;
    COL1
    223.993939
    88.228384
    9.34
    0Did you ever have a business scenario where a Numerical column should store values only with a fixed precision and scale ?Lots of business requirements for specific precisions and scales.
    A persons Age may required to be stored as whole numbers of no more than 3 digits.
    A sum of money may required to be stored with no more than 2 decimal places of accuracy e.g. GB Pounds and Pence or US Dollars and Cents
    A unit of length may required to be stored in metres with 2 decimal places for centimetres
    A shoe size may be required to be stored with one decimal place for half sizes
    etc.
    etc.
    Yes, you may just create all of them as generic NUMBER datatype, but creating them with precision and scale can provide additional information about the limitations expected for the values stored, especially for things like reporting tools that may use the specified precision and scale to determine how to display the values automatically (by default).
    If you start questioning "what's the point?" then you may as well say what's the point in having a NUMBER datatype when we can store numbers in a VARCHAR2 datatype? or what's the point in having a DATE datatype when we can stored dates as VARCHAR2 datatype? etc.
    No point in asking such a question because there's almost always a point to these things (and if there isn't they get deprecated in later versions).

  • How to specify precision and scale for a datatype in create procedure statement

    Specifying precision and scale in the datatype when creating a procedure does not work:
    create or replace function SqlTxFunctionTesting(inparam in number(9,2)
    Error(1,48): PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue.

    user4928701 wrote:
    Specifying precision and scale in the datatype when creating a procedure does not work:
    create or replace function SqlTxFunctionTesting(inparam in number(9,2)
    Error(1,48): PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue.
    And one of the cons in the PL/SQL language in my view.
    The language does not allow parameters to be declared in the fashion you are attempting to. Even declaring a subtype and using that, does not enforce either the precision or scale, on the parameter value passed.
    Even worse - the parameter value can be a different data type all together from the defined parameter type - and a silent and implicit data type conversion will be done at run-time.
    So you can expect run-time errors in your code unit caused by the caller passing invalid values, despite the compiler okaying the call from the caller to your code.
    There are pros and cons to this approach. But if you are from a very strong type language environment like C or Pascal, you tend to see more cons than pros in this specific case.

  • Can I know the precision and scale of a decimal field using ACEDAO?

    Using ACEDAO in VC++, I am trying to retrieve the field details of an Access database (.accdb file) table of which one field is of decimal type. I am able to get the details using the functions of
    DAO::_FieldPtr field;
    as follows:
    fieldName = field->GetName().GetBSTR();
    nType = field->GetType() // returns DAO::dbDecimal
    lSize = field->GetSize(); // returns 16
    lAttr = field->GetAttributes(); // returns 0x000002H
    nOrdinal = field->GetOrdinalPosition(); // returns 11
    bAutoIncrement = ((lAttr & DAO::dbAutoIncrField) > 0);
    DAO::PropertiesPtr props;
    DAO::PropertyPtr prop;
    int k, nProp;
    std::wstring propName, propNames;
    props = field->GetProperties();
    if(props)
    nProp = props->GetCount(); // returns 33
    for(k = 0; k < nProp; k++)
    prop = field->GetProperties()->GetItem((short) k);
    if(prop)
    propName = prop->GetName().GetBSTR();
    propNames += propName;
    propNames += L"\n";
    // After exiting the loop, propNames contain 33 properties as:
    // Value
    // Attributes
    // CollatingOrder
    // Type
    // Name
    // OrdinalPosition
    // Size
    // SourceField
    // SourceTable
    // ValidateOnSet
    // DataUpdatable
    // ForeignName
    // DefaultValue
    // ValidationRule
    // ValidationText
    // Required
    // AllowZeroLength
    // AppendOnly
    // Expression
    // FieldSize
    // OriginalValue
    // VisibleValue
    // GUID
    // ColumnWidth
    // ColumnOrder
    // ColumnHidden
    // Description
    // DecimalPlaces
    // DisplayControl
    // TextAlign
    // AggregateType
    // ResultType
    // CurrencyLCID
    //But does not have any property named "Scale" or "Precision"
    I could not find any function for retrieving the value for precision and scale for the decimal field.
    Though I am able to retrieve the field value as a decimal number and get the required information from the structure, I think it is not the right way. Because, what will happen if the data for field is not available in the table?
    Is there any other method to retrieve the precision and scale of a decimal type field using ACEDAO?
    Thanks.

    I cannot find a method or property in ACEDAO to retrieve the precision and scale of a field. Maybe you could try get the number of a decimal type and use some mathematical methods to get the precision.
    I find there are some way to get the precision by ADO or OLEDB.
    For ADO way, you could check this thread:
    https://social.msdn.microsoft.com/Forums/office/en-US/883087ba-2c25-4571-bd3c-706061466a11/how-can-i-programmatically-access-scale-property-of-a-decimal-data-type-field?forum=accessdev
    For OLE DB , you could use IColumnsInfo::GetColumnInfo to get DBCOLUMNINFO::bPrecision.
    https://msdn.microsoft.com/en-us/library/windows/desktop/ms722704(v=vs.85).aspx
    Also people in C++ may not familiar with access development, the
    Access for Developers forum is good place for access develop issue. You could try there.
    Hope this helps some.
    Shu
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Validation on numerical values in webdynpro

    Hi Friends,
    I am facing one probelem with  validation on numerical values. In my application there is a scenario.. Input fields are  Mibile number  and  email id.
    when i enter the invalid phone  number like : 09988wertyy    it should throw the error like  enter  only numerical values.
    In the same way  i should  validate the email id with format .. like  ratnakar.alwala@ accenture.com. if it is in valid then it should throw the error.
    could  any body  please give me the approach.
    Thanks and Regards
    Ratnakar reddy alwala

    Hi Ratnakar,
    For number validation, what I did was :
    1. Bind a context variable (Say Number) of type String to the input Field
    2. At the time of submission, do the following
    String num=wdContext.xurrentContextElement().getNumber();
    if(num!=null)
      try
            double num=new Double(amnt.trim()).doubleValue();
      catch(NumberFormatException exc)//IF AMOUNT ENTERED IS NOT VALID
       wdComponentAPI.getMessageManager().reportException("Invalid Number",true);
    Regards
    Fahad Hamsa

  • Specifying precision and scale

    Hello,
    I have a table that was created with a column pfixed NUMBER(38). The data contains up to 16 numbers after the decimal point (e.g. <pfixed>4.8283510208129883</pfixed>). XSU loads it with scale of 0, which results in everything after the decimal being truncated. The precision is correctly set to 38, to match the NUMBER column.
    Is this a problem with the create table statement, or is there a way to tell XSU what scale to use?
    Thanks,
    Leila

    i'm not sure if i understand your problem..
    you say you (or someone else) declared a
    table with NUMBER(38) and you want 0.??? written to it (or from ??)...
    then why not declare your own precision
    ( format NUMBER(a,b)
    where a is size and b is precision)
    assume the number xxx.yyyy
    format NUMBER(2,4) stores xx.yyyy
    format NUMBER(1,2) stores x.yy
    format NUMBER(3,1) stores xxx.y
    38 is NOT your precision, it's SIZE !!
    i hope this helps...
    null

  • Precision and Scale in NUMBER datatype

    In oracle, if you want to store a number like 892.34, you need to declare the NUMBER type like
    number(5,2)Here 5 stands for the total number of digits including the numbers after the decimal point.
    2 stands the number of digits to the right of the decimal.
    Isn't this confusing? Can't they just make the syntax like
    number(3,2)where 3 is the number of digits from left till the decimal and 2 is the number of digits after the decimal.

    create table t ( n number( 6, 5 ) ) ;
    alter table t add constraint c check ( n between 0.00001 and 0.1 ) ;
    invalid value will throw
    SQL Error: ORA-02290: check constraint (SYS.C) violated
    *Cause:    The values being inserted do not satisfy the named check          
    *Action:   do not insert values that violate the constraint.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Number precision and scale

    I have a xml document that I want to test against the shredded schemas. The XSD type creates a number(6,1).
    When I insert the xml document if the number is 2.22 it will insert the record even if the XSD has a xs:fractionDigits value="1"
    I realize Oracle uses floating point and truncates or rounds the number. Is there a way to have an error on the xml document load if the decimal point is larger then one digit as defined in the XSD?

    Mark,
    The schema has 10 xsd files with includes. I pasted a portion of the one that had the fractional digit 6,1. Did you want all 10, or this what you are looking for?
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by mbarth (Computer Science Corp.) -->
    <xs:schema targetNamespace="http://science.doe.gov/ePME" xmlns:epme="http://science.doe.gov/ePME" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
         <xs:include schemaLocation="countries.xsd"/>
         <xs:include schemaLocation="purpose.xsd"/>
         <xs:include schemaLocation="reason.xsd"/>
         <xs:include schemaLocation="research_areas.xsd"/>
         <xs:include schemaLocation="research_cat_ids.xsd"/>
         <xs:include schemaLocation="work_cat_ids.xsd"/>
         <xs:complexType name="fiscal_year_budget_info">
              <xs:sequence>
                   <xs:element name="staffing_scientific" nillable="false" minOccurs="0">
                        <xs:annotation>
                             <xs:documentation>Scientific staffing in full-time equivalent person years</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                             <xs:restriction base="xs:decimal">
                                  <xs:fractionDigits value="1"/>
                                  <xs:totalDigits value="6"/>
                             </xs:restriction>
                        </xs:simpleType>
                   </xs:element>
                   <xs:element name="staffing_other_direct" minOccurs="0">
                        <xs:annotation>
                             <xs:documentation>Other direct staffing in full-time equivalent person years</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                             <xs:restriction base="xs:decimal">
                                  <xs:fractionDigits value="1"/>
                                  <xs:totalDigits value="6"/>
                             </xs:restriction>
                        </xs:simpleType>
                   </xs:element>
                   <xs:element name="staffing_total_direct" minOccurs="0">
                        <xs:annotation>
                             <xs:documentation>Total direct staffing in full-time equivalent person years</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                             <xs:restriction base="xs:decimal">
                                  <xs:fractionDigits value="1"/>
                                  <xs:totalDigits value="6"/>
                             </xs:restriction>
                        </xs:simpleType>

  • Shp2sdo precision and scale

    The SDO_ORDINATES in the CTL file generated by shp2sdo contain only 6 decimal places even though the source shapefile contains ordinates with a larger scale (as evidenced via ESRI products and reviewing the geometries generated when the spatial layer is created via ArcSDE). The -t tolerance parameter seems to have no effect on the actual SDO_ORDINATES scale (just effects the metadata). Is this a limitation in shp2sdo or is something else going on here?
    Thank you for your help, James

    Can anyone please tell were I can get a copy of shp2sdo. I have done a search on it's name and have found no software by this name.
    Thanks,
    John look at:
    http://otn.oracle.com/software/products/spatial/content.html
    for the shapefile converter and other Spatial tools
    Mark

  • Validating numeric value in a filename

    I have a file and the filename  should be like ABC_12345_RES_20150410.txt and i have to validate the filename.I am facing problem in validating the numeric value which can change and its length also can change.
    I am using the following expression to validate whether its the numeric value /not:
    (DT_I4)(SUBSTRING( @[User::FileName]  ,FINDSTRING( @[User::FileName]  ,"_", 1)+1, FINDSTRING( @[User::FileName]  ,"_", 2)-FINDSTRING( @[User::FileName]  ,"_", 1)-1)) == (DT_I4)(SUBSTRING( @[User::FileName] 
    ,FINDSTRING( @[User::FileName]  ,"_", 1)+1, FINDSTRING( @[User::FileName]  ,"_", 2)-FINDSTRING( @[User::FileName]  ,"_", 1)-1))
    This statement is failing the package when i am entering a character instead of digit.. But i don't want the package to fail rather i just want to log the exception in this case.
    Is there any other way to validate the numeric Value?
    Many Thanks in Advance!

    Thanks a ton Martin for your advice.
    I can do that but Actually the conversion is failing.. its giving error that cannot convert to (DT_I8). M looking for any other  way to validate  the numeric value.

  • How to connect input string value to numerical values

    Hello,
    I am trying to figure out how to connect a single user's input string value to numerical values. Basically I want the user to input the name of a gas that I have a list for (I believe i put the list of gasses in an array>). Then I want to match 2 numerical values "a" and "b" depending on which gas name the user has put in. These "a" and "b" values will be automatically matched with the gas name from a list I put. For example the gas hydrogen has a value of 3 for "a" and 4 for "b. so when the user puts the name "hydrogen" in a string constant, automatically  "a" and "b" should be outputted. I will be connecting a and b to a formula
    Thanks for any help
    Solved!
    Go to Solution.

    student11 wrote:  These "a" and "b" values will be automatically matched with the gas name from a list I put. For example the gas hydrogen has a value of 3 for "a" and 4 for "b".
    This sounds a lot like an Enum to me.  Make sure you type def the enum to make sure updates quickly and easily make it to all copies of the enums.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Popup Key LOV, NULL and "Invalid numeric value undefined for column"

    Hello.
    I've created an item based on database column of NUMBER type and set the following properties:
    Display As = Popup Key LOV (Displays description, returns key value)
    List of values definition=select 'display_value' d, 1 r from dual
    Null display value=%
    Null return value=
    Display Null=Yes
    When I select "%" in the LOV and try to apply changes to database I get error:
    ORA-20001: Error in DML: p_rowid=1781, p_alt_rowid=N1, p_rowid2=, p_alt_rowid2=. ORA-20001: Invalid numeric value undefined for column N2
    Error Unable to process row of table TTT.
    If I set Display As = Select List, all works fine. But I need Popup Key LOV.
    Could anybody help me?
    I use Application Express 2.2.1.00.04

    Hi all,
    I did my homework and solved this issue. First I would like to thank Patrick Wolf for the invaluable help he gives out on thread Re: Null value handling in LOVs The code presented here is just a minor edit to his code, but an essential one when dealing with Popup Key LOV items.
    Here's what I did:
    1. Create an Application Process.
    Name: RemoveNulls
    Sequence: 0
    Point: On Submit: After Page Submission - Before Computations and Validations
    Process Text:
    BEGIN
        FOR rItem IN
          ( SELECT ITEM_NAME
              FROM APEX_APPLICATION_PAGE_ITEMS
             WHERE APPLICATION_ID   = TO_NUMBER(:APP_ID)
               AND PAGE_ID          IN (TO_NUMBER(:APP_PAGE_ID), 0)
               AND LOV_DISPLAY_NULL = 'Yes'
               AND LOV_DEFINITION   IS NOT NULL
               AND LOV_NULL_VALUE   IS NULL
        LOOP
            IF (V(rItem.ITEM_NAME) = '%null' || '%' OR V(rItem.ITEM_NAME) = 'undefined')
            THEN
                Apex_Util.set_session_state(rItem.ITEM_NAME, NULL);
            END IF;
        END LOOP;
    END;Error Message: #SQLERRM#Condition: None
    2. You should be able to submit a Popup Key LOV with a NULL value now.
    Once again, THANKS, Patrick! You rock! I'm seriously thinking of trying ApexLib now :)
    Georger

  • How do I allocate a numerical value to a 5 part likert scale question

    I have a survey questionaire and the 15 questions are all arranged on a 5 part 'Liket scale' of strongly agree to strongly disagree.
    How do I allocate numerical values to each question response? 
    I don't want the respondents to see the scoring.
    The reason I need to do this is some response lines are reverse scored. That is to say some lines would be scored 1 to 5 and other lines 5 to 1.
    I think this feature is available on survey monkey.
    Is it available in Acrobat X Pro or Formscentral?
    I'd appreciate your suggestions
    Kind regards
    spreid1

    Hi,
    You can assign numerical responses to the likert answers as follows:
    1. Go into the response table and select the "Table" toolbar button:
    2. Select the header for your Likert questions in the response table.
    3. Click the "Choices" button on the toolbar and select "Edit choice list..."
    4. Select the checkbox for "Assign data values to choices".
    5. Enter the choice data values in the right-hand column.

Maybe you are looking for

  • Read-only filesystem after reinstallation,chmod failure

    I decided to switch to a pure systemd init yesterday. Despite strictly followed wiki my system failed to init with switch to systemd emergency mode with no way to cure the problem. So I followed with reinstallation of my system (32bit on 64bit HW as

  • Content Conversion Parameters in Communication Channel

    Hi, I have a requiremnet to develop: Scenario is SAP to Legacy System Based on Mapping Sheet, I have defined Data types for both SAP and Legacy system. The Data structure is There is a root node IS with occurance 1-n. In this node there is another no

  • Kernel panic after installing Yosemite (when connected to power source)

    My Macbook Pro is crashing regularly since I installed Yosemite a couple of weeks back. This only happens when the laptop is connected to a power source and not in use. I get the following Kernel Panic message. Would really appreciate some help since

  • Satellite P850/P855 - Sound/Image lag while using media

    Hi While I'm listening on spotify or seing a movie, theres a small lag every 10 or 20 minute. I bought this laptop 3 days ago and haven't used it that much. Any idea how I can fix this? Could it be something wrong in the hardware? Per

  • Can you replace the back housing on iPad mini 3 gold edition?

    I've scratched it.  Arghh!!  Brand new and scratch already.  I realize it's not the screen, but still bummed.    Can you just replace the back housing?  I have the mini 3 gold edition with 64gb memory.  Any help, much appreciated.  Thanks.