Microsoft KB Archive/216978

= BUG: "Invalid number" Error When Inserting Decimals into UNIX Version of Oracle =

Article ID: 216978

Article Last Modified on 10/7/2005

-

APPLIES TO


 * Microsoft Open Database Connectivity 2.5
 * Microsoft Open Database Connectivity 2.5
 * Microsoft Open Database Connectivity 2.5
 * Microsoft Data Access Components 2.0
 * Microsoft Data Access Components 2.1

-



This article was previously published under Q216978



SYMPTOMS
When using parameter binding in the Microsoft Oracle ODBC driver to insert decimal values into an Oracle server installed on UNIX, the following error is returned:

[Microsoft][ODBC driver for Oracle][Oracle]ORA-01722: invalid number

This error does not occur when inserting the same values into an Oracle server installed on Windows NT.



CAUSE
During connection, the Oracle driver determines the character to use as a decimal separator by issuing the following statement:

    SELECT 99/100 FROM DUAL

which should return ".99", and the first character is used as the decimal separator.

On UNIX platforms, " .9" is returned instead of the expected ".99", which causes a decimal such as "123.45" to be passed as "123 45". This generates the "Invalid number" error.



RESOLUTION
A supported fix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Apply it only to computers that are experiencing this specific problem. This fix may receive additional testing. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:

http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

NOTE: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

This hotfix is engineered to work with Microsoft Data Access Components (MDAC) builds 2.0 and 2.1. The hotfix contains the MDAC 2.0 MSORACL32.DLL and MDAC 2.1 MSORACL32.DLL. See installation instructions below.

Installation Instructions
 Place the self-extracting zip file (OraUnix.exe) into a temporary directory. Unzip the file with the "-d" option, to preserve directory information. For example: "OraUnix.exe -d". Two subfolders - Mdac20 and Mdac21 - will be created. Locate msorcl32.dll in the system folder. Verify that no applications or services are using the driver. Copy the new driver from the folder it was extracted to (choosing the appropriate version directory) into the system folder.  Register the new driver using the following:

<pre class="fixed_text">Regsvr32.exe msorcl32.dll

</li></ol>

NOTE: Due to file dependencies, the most recent hotfix or feature that contains the above files may also contain additional files.

<div class="workaround_section">

WORKAROUND
Do not use parameter binding in your application; instead, just insert the values hard-coded into an INSERT statement. Install MDAC 2.1 SP2 or higher as the Oracle ODBC driver is updated with the fix in those versions.

<div class="status_section">

STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

Additional query words: decimal oracle unix invalid number parameter ORA-01722

Keywords: kbbug kbfix kboracle kbqfe kbdatabase kbdriver kbhotfixserver KB216978

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.